SlideShare a Scribd company logo
1 of 64
© 2021 NTT DATA Corporation
2021/08/28
関 堅吾・岩崎 正剛
日本Hadoopユーザ会/株式会社NTTデータ
Apache Bigtopによるオープンなビッグデータ処理基盤の構築
© 2021 NTT DATA Corporation 2
Apache Bigtopの概要
© 2021 NTT DATA Corporation 3
• 公式サイト (https://bigtop.apache.org/) より:
• "Bigtop is an Apache Foundation project for Infrastructure
Engineers and Data Scientists looking for comprehensive
packaging, testing, and configuration of the leading open source
big data components."
• 『Bigtopは、先進的なビッグデータ関連OSSのパッケージングやテスト、
設定を求めているインフラエンジニアやデータサイエンティストのための
Apacheソフトウェア財団のプロジェクトです。』
• 一言で言うと「Hadoop・Spark を中心としたデータ基盤を容易に構築する
ための OSS」です。
Apache Bigtopとは何か
© 2021 NTT DATA Corporation 4
Apache Bigtop の歴史
(近日リリース予定)
2020
2019
2018
2017
2016
2015 2021
2012
2011
Cloudera社からApacheソフトウェア財団に、incubatorプロジェクトとして寄贈される
Apache incubator プロジェクトからトップレベルプロジェクトに昇格
© 2021 NTT DATA Corporation 5
Bigtop 3.0のソフトウェアスタック
コンポーネント バージョン 説明
Alluxio 2.4.1 ストレージ仮想化
Ambari 2.7.5 クラスタ構築・管理
Elasticsearch 5.6.14 全文検索エンジン
Flink 1.11.3 ストリーム処理系
GPDB 5.28.5 MPP
Hadoop 3.2.2
分散ファイルシステム・
並列分散処理基盤
HBase 2.2.6 分散KVS
Hive 3.1.2 Hadoop用クエリ処理系
Kafka 2.4.1 分散メッセージングシステム
Kibana 5.4.1
検索フロントエンド・データ
可視化
Livy 0.7.1 Spark用RESTゲートウェイ
コンポーネント バージョン 説明
Logstash 5.4.1 ログ転送
Oozie 5.2.1 ジョブスケジューラ
Phoenix 5.1.0 HBase用クエリ処理系
Solr 8.7.0 全文検索エンジン
Spark 3.0.1
並列分散処理エンジン・
ストリーム処理系
Sqoop 1.4.7 バルクローダ
Tez 0.10.0 並列分散処理エンジン
YCSB 0.17.0 ベンチマークツール
Zeppelin 0.9.0 ノートブック
Zookeeper 3.4.14 分散ロックマネージャ
※3.0 で削除されたコンポーネント
Flume, Giraph, Ignite, Mahout, QFS, Sqoop 2
© 2021 NTT DATA Corporation 6
• 2021/8現在、残る課題は数件程度
• 既にリリース用のブランチ (branch-3.0) も切られており、致命的な問題がなければ
1, 2ヶ月以内にリリースされる見込み
Bigtop 3.0 リリースに向けた開発状況
© 2021 NTT DATA Corporation 7
Apache Bigtopの使い方
© 2021 NTT DATA Corporation 8
1. 要件を満たすソフトウェアの選定と、それらの間の相互運用性の確認
2. 選定したソフトウェアを(場合によっては大量の)サーバ群にインストールし、
それらのサーバ上で各製品を適切に設定
3. 設定を施したサーバ群が、クラスタとして正しく動作していることを確認
4. 必要に応じ、上記の手順をローカル環境やステージング環境で事前に確認
データ基盤構築の流れ
© 2021 NTT DATA Corporation 9
1. 要件を満たすソフトウェアの選定と、それらの間の相互運用性の確認
→相互運用性を確認済みの幅広いビッグデータ関連ソフトウェアを、debやrpmと
いったパッケージとして提供
2. 選定したソフトウェアを(場合によっては大量の)サーバ群にインストールし、
それらのサーバ上で各製品を適切に設定
→各ソフトウェアのデプロイを自動化するための Puppet マニフェストを提供
3. 設定を施したサーバ群が、クラスタとして正しく動作していることを確認
→各ソフトウェアの主要な機能が問題なく動作していることを確認するための、
スモークテストを提供
4. 必要に応じ、上記の手順をローカル環境やステージング環境で事前に確認
→Dockerコンテナにソフトウェアをデプロイし、スモークテストや試用が行える
Provisionerを提供
データ基盤構築のためにBigtopが提供する機能
© 2021 NTT DATA Corporation 10
1. 要件を満たすソフトウェアの選定と、それらの間の相互運用性の確認
→相互運用性を確認済みの幅広いビッグデータ関連ソフトウェアを、debやrpmと
いったパッケージとして提供
2. 選定したソフトウェアを(場合によっては大量の)サーバ群にインストールし、
それらのサーバ上で各製品を適切に設定
→各ソフトウェアのデプロイを自動化するための Puppet マニフェストを提供
3. 設定を施したサーバ群が、クラスタとして正しく動作していることを確認
→各ソフトウェアの主要な機能が問題なく動作していることを確認するための、
スモークテストを提供
4. 必要に応じ、上記の手順をローカル環境やステージング環境で事前に確認
→Dockerコンテナにソフトウェアをデプロイし、スモークテストや試用が行える
Provisionerを提供
データ基盤構築のためにBigtopが提供する機能
© 2021 NTT DATA Corporation 11
• Bigtop はコンポーネント間の相互運用性が確認されたバージョン同士の組合せを、deb/rpm形式の
パッケージとして提供している。これにより、以下のメリットがある。
• ユーザ側で、問題なく動作するバージョンの組合せを検証・特定しなくて済む
• Linux ディストリビューション標準のパッケージマネージャ (yum/dnf/apt) が使えることで、
• 標準化された手順でインストール・アンインストールを実施できる
• 依存しているソフトウェアも自動でインストールしてくれる
• インストールしたソフトを一元管理できる
• Bigtop では、以下の Linux ディストリビューション と CPU アーキテクチャをサポートしている
1. ビッグデータ関連OSSをパッケージとして提供
Linux ディストリ
ビューション
Bigtop 1.5.0
Bigtop 3.0.0
(近日リリース)
CentOS 7, 8 7, 8
Fedora 31 33
Debian 9, 10 9, 10
Ubuntu 16.04, 18.04 18.04, 20.04
CPU
アーキテクチャ
Bigtop 1.5.0 Bigtop 3.0.0
(近日リリース)
x86_64 〇 〇
aarch64 〇 〇
ppc64le - 〇
© 2021 NTT DATA Corporation 12
Bigtop の公式サイト (https://bigtop.apache.org/) から、以下のリンクを辿って取得
パッケージを公開しているリポジトリを利用するための設定ファイル
Linux ディストリビューション別に、
rpm 用の .repo ファイルや
deb 用の .list ファイルが
ダウンロード可能
© 2021 NTT DATA Corporation 13
• RPMパッケージを用いたコンポーネントのインストールは以下の3ステップ
パッケージのインストール手順 (CentOS/Fedora の場合)
$ sudo wget -P /etc/yum.repos.d -q 
https://downloads.apache.org/bigtop/bigtop-1.5.0/repos/centos-7/bigtop.repo
$ sudo rpm --import 
https://downloads.apache.org/bigtop/bigtop-1.5.0/repos/GPG-KEY-bigtop
$ sudo yum install hadoop
$ hadoop version
Hadoop 2.10.1
1. リポジトリ設定ファイルをダウンロード・配置
2. GPG キーをインポート
3. リポジトリ情報のアップデート・コンポーネントのインストール
© 2021 NTT DATA Corporation 14
$ sudo wget -P /etc/apt/sources.list.d -q 
https://downloads.apache.org/bigtop/bigtop-1.5.0/repos/ubuntu-18.04/bigtop.list
$ curl -s https://downloads.apache.org/bigtop/bigtop-1.5.0/repos/GPG-KEY-bigtop | 
sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install hadoop
$ hadoop version
Hadoop 2.10.1
• debパッケージを用いたコンポーネントのインストール手順も同様
パッケージのインストール手順 (Debian/Ubuntu の場合)
1. リポジトリ設定ファイルをダウンロード・配置
2. GPG キーをインポート
3. リポジトリ情報のアップデート・コンポーネントのインストール
© 2021 NTT DATA Corporation 15
1. 要件を満たすソフトウェアの選定と、それらの間の相互運用性の確認
→相互運用性を確認済みの幅広いビッグデータ関連ソフトウェアを、debやrpmと
いったパッケージとして提供
2. 選定したソフトウェアを(場合によっては大量の)サーバ群にインストールし、
それらのサーバ上で各製品を適切に設定
→各ソフトウェアのデプロイを自動化するための Puppet マニフェストを提供
3. 設定を施したサーバ群が、クラスタとして正しく動作していることを確認
→各ソフトウェアの主要な機能が問題なく動作していることを確認するための、
スモークテストを提供
4. 必要に応じ、上記の手順をローカル環境やステージング環境で事前に確認
→Dockerコンテナにソフトウェアをデプロイし、スモークテストや試用が行える
Provisionerを提供
データ基盤構築のためにBigtopが提供する機能
© 2021 NTT DATA Corporation 16
• パッケージの導入でインストール作業は省力化できたが、以下の問題は解決されていない
• サーバの台数が多い場合、1台1台インストールのコマンドを投入するのは大変
• パッケージのインストール後も、各ソフトウェアに適切な設定を施したり、サービスを
起動したりといった作業が必要
• Bigtop は Puppet マニフェストを提供することで、これらの作業を自動化
• Puppet (https://puppet.com/open-source/) はRubyで記述されたOSSの構成管理
ツールで、2005年から開発されており十分な実績がある
• Puppet manifest はシステムの「あるべき姿」を記述した設定ファイルで、この定義
に従って Puppet がパッケージのインストールや設定、サービスの起動などを行う
• Puppet は Hiera (https://puppet.com/docs/puppet/latest/hiera.html) というキー
バリュー型の設定管理システムを備える
• ユーザが Hiera ファイルに適切な値を設定して Puppet を実行することで、Puppet
が設定ファイルの対応する箇所に指定した値を設定してくれる
2. デプロイを自動化するための Puppet マニフェストの提供
© 2021 NTT DATA Corporation 17
• Bigtop の公式サイト (https://bigtop.apache.org/) から、以下のリンクを辿って取得
• apt・yumリポジトリの設定ファイルとは別に配布されている
• 後述するスモークテスト関連のファイルなども本ファイルに含まれる
Puppet マニフェストのダウンロード
© 2021 NTT DATA Corporation 18
• Puppet マニフェストを用いたコンポーネントのデプロイは、以下の4ステップ (次ページに続く)
Puppet マニフェストを用いたコンポーネントのデプロイ手順
$ curl -sLO https://downloads.apache.org/bigtop/bigtop-1.5.0/bigtop-1.5.0-project.tar.gz
$ tar xf bigtop-1.5.0-project.tar.gz
$ cd bigtop-1.5.0
$ sudo bigtop_toolchain/bin/puppetize.sh
$ vi bigtop-deploy/puppet/hieradata/site.yaml
$ cat bigtop-deploy/puppet/hieradata/site.yaml
---
bigtop::hadoop_head_node: "fqdn.of.head.node"
hadoop::hadoop_storage_dirs:
- /data
hadoop_cluster_node::cluster_components:
- hdfs
- yarn
- mapreduce
1. Bigtop の tarball をダウンロードし展開
2. 中に含まれるスクリプトを実行して Puppet をインストール
3. Hiera ファイルを編集。最低限必要な設定は左記の3
つだが、インストールするコンポーネントに応じて必
要な設定を記述する。
• bigtop::hadoop_head_node: Hadoop のマスター
ノードのFQDN
• hadoop::hadoop_storage_dirs: Hadoop のデータ格
納先ファイルパス
• hadoop_cluster_node::cluster_components: インス
トールするコンポーネントのリスト。例では HDFS,
YARN, MapReduceをインストールしている。
© 2021 NTT DATA Corporation 19
Puppet マニフェストを用いたコンポーネントのデプロイ手順 (続き)
$ sudo cp -r bigtop-deploy/puppet/hiera* /etc/puppet
$ sudo puppet apply --parser future 
--modulepath=bigtop-deploy/puppet/modules:/etc/puppet/modules 
bigtop-deploy/puppet/manifests
(略)
Notice: Finished catalog run in 65.99 seconds
$ echo $?
0
$ sudo jps
7873 ResourceManager
8722 DataNode
8486 NodeManager
8922 Jps
8251 NameNode
7775 WebAppProxyServer
8159 JobHistoryServer
4. Hiera ファイル群を所定のパスに
コピーし、Puppet を実行
※一連の手順を parallel-ssh
(http://code.google.com/p/parallel-ssh/) など
を用いて実行することで、クラスタ内の全
サーバでデプロイを行うことが可能
© 2021 NTT DATA Corporation 20
1. 要件を満たすソフトウェアの選定と、それらの間の相互運用性の確認
→相互運用性を確認済みの幅広いビッグデータ関連ソフトウェアを、debやrpmと
いったパッケージとして提供
2. 選定したソフトウェアを(場合によっては大量の)サーバ群にインストールし、
それらのサーバ上で各製品を適切に設定
→各ソフトウェアのデプロイを自動化するための Puppet マニフェストを提供
3. 設定を施したサーバ群が、クラスタとして正しく動作していることを確認
→各ソフトウェアの主要な機能が問題なく動作していることを確認するための、
スモークテストを提供
4. 必要に応じ、上記の手順をローカル環境やステージング環境で事前に確認
→Dockerコンテナにソフトウェアをデプロイし、スモークテストや試用が行える
Provisionerを提供
データ基盤構築のためにBigtopが提供する機能
© 2021 NTT DATA Corporation 21
• コンポーネントのデプロイが完了したら、それらの主要な機能が問題なく動作していること
を確かめたい
• そのために Bigtop は、各コンポーネントのスモークテストを提供している
3. 各コンポーネントの動作確認のためのスモークテストの提供
© 2021 NTT DATA Corporation 22
スモークテストの実行方法
• スモークテストの実行は以下の4ステップ。
$ curl -sLO https://downloads.apache.org/bigtop/bigtop-1.5.0/bigtop-1.5.0-project.tar.gz
$ tar xf bigtop-1.5.0-project.tar.gz
$ cd bigtop-1.5.0
$ rm -rf bigtop-tests/smoke-tests/odpi-runtime
$ . /usr/lib/bigtop-utils/bigtop-detect-javahome
$ export HADOOP_CONF_DIR=/etc/hadoop/conf
$ ./gradlew bigtop-tests:smoke-tests:yarn:test -Psmoke.tests --info
org.apache.bigtop.itest.hadoop.yarn.TestNode > testNodeBasic STANDARD_OUT
-list
-status
org.apache.bigtop.itest.hadoop.yarn.TestRmAdmin > testRmAdminBasic STANDARD_OUT
-help
-getGroups
...
2. Bigtop 1.5 向けのワークアラウンド (既に使われていない
ファイル群の削除。近日リリースされる Bigtop 3.0 では不要)
1. Bigtop の tarball をダウンロードし展開
(前の節で使用したものと同じファイル)
3. JAVA_HOME, およびテストの実行に必要な環境変数の定義.
(コンポーネントごとに必要な環境変数は異なる。確認するには展開した
ファイルの bigtop-tests/smoke-tests/コンポーネント名/build.gradle
の doFirst メソッドを参照)
4. Gradle wrapper からスモークテストを実行。
ここでは YARN のテストを行っている。
© 2021 NTT DATA Corporation 23
スモークテストの実行方法 (続き)
...
Gradle Test Executor 2 finished executing tests.
> Task :bigtop-tests:smoke-tests:yarn:test
Finished generating test XML results (0.021 secs) into: /home/sekikn/bigtop-
1.5.0/bigtop-tests/smoke-tests/yarn/build/test-results/test
Generating HTML test report...
Finished generating test html results (0.035 secs) into: /home/sekikn/bigtop-
1.5.0/bigtop-tests/smoke-tests/yarn/build/reports/tests/test
Now testing...
:bigtop-tests:smoke-tests:yarn:test (Thread[Daemon worker,5,main]) completed. Took
14.78 secs.
BUILD SUCCESSFUL in 55s
7 actionable tasks: 5 executed, 2 up-to-date
Stopped 1 worker daemon(s).
スモークテストに成功
テストの詳細な結果を知りたい場合は
これらのファイルを参照
© 2021 NTT DATA Corporation 24
スモークテスト実行結果のサンプル
© 2021 NTT DATA Corporation 25
1. 要件を満たすソフトウェアの選定と、それらの間の相互運用性の確認
→相互運用性を確認済みの幅広いビッグデータ関連ソフトウェアを、debやrpmと
いったパッケージとして提供
2. 選定したソフトウェアを(場合によっては大量の)サーバ群にインストールし、
それらのサーバ上で各製品を適切に設定
→各ソフトウェアのデプロイを自動化するための Puppet マニフェストを提供
3. 設定を施したサーバ群が、クラスタとして正しく動作していることを確認
→各ソフトウェアの主要な機能が問題なく動作していることを確認するための、
スモークテストを提供
4. 必要に応じ、上記の手順をローカル環境やステージング環境で事前に確認
→Dockerコンテナにソフトウェアをデプロイし、スモークテストや試用が行える
Provisionerを提供
データ基盤構築のためにBigtopが提供する機能
© 2021 NTT DATA Corporation 26
• いきなり商用環境にデータ基盤を構築する前に、ローカルやステージング環境で
確認したいケースは多々ある
• Bigtop に含まれるコンポーネントで業務上・システム上の要件を満たせるか、
事前に検証したい
• 構築手順が正しいことを事前に確認したい
• ソフトウェアをバージョンアップすることで、既存のアプリケーションが問題
なく動作するか確認したい、など
• このため、Bigtop は Docker コンテナ上にコンポーネントをデプロイできる
Provisioner と呼ばれる機能を提供している
• 事前に Docker, Docker Compose がインストールされ、Gradle wrapper を
実行するユーザから使えるよう設定されている必要がある
4. Docker コンテナ上でデプロイやテストを行うための Provisioner の提供
© 2021 NTT DATA Corporation 27
Docker provisioner の使用方法
$ ./gradlew docker-provisioner -Pnum_instances=3 -POS=centos-7 -Pprefix=1.5.0 
-Pstack=hdfs,yarn
> Task :docker-provisioner
...
Pulling bigtop (bigtop/puppet:1.5.0-centos-7)...
1.5.0-centos-7: Pulling from bigtop/puppet
...
Creating 20210718_235316_r4927_bigtop_3 ... done
Creating 20210718_235316_r4927_bigtop_1 ... done
Creating 20210718_235316_r4927_bigtop_2 ... done
...
Notice: Roles to deploy: [nodemanager, mapred-app, datanode]
Notice: Roles to deploy: [nodemanager, mapred-app, datanode]
Notice: Roles to deploy: [resourcemanager, nodemanager, mapred-app, hadoop-client,
namenode, datanode]
...
BUILD SUCCESSFUL in 9m 6s
3台の Docker コンテナ上 (OS は CentOS 7) に Bigtop 1.5.0 の
HDFS, YARN をインストールするコマンドを実行
(ローカルに存在しなければ) Bigtop 1.5.0 の
CentOS 7 イメージが pull され、そのイメージ
からコンテナが作成される
指定したコンポーネントの Puppet
マニフェストを使って、コンテナ上
へのデプロイが実行される
© 2021 NTT DATA Corporation 28
Docker provisioner の使用方法 (続き)
[vagrant@localhost bigtop-1.5.0]$ docker ps
2988ef9bd930 bigtop/puppet:1.5.0-centos-7 "/sbin/init" 10 minutes ago Up 10 minutes
20210718_235316_r4927_bigtop_2
579c6cc9d9e3 bigtop/puppet:1.5.0-centos-7 "/sbin/init" 10 minutes ago Up 10 minutes
20210718_235316_r4927_bigtop_1
1cdbe4c135ed bigtop/puppet:1.5.0-centos-7 "/sbin/init" 10 minutes ago Up 10 minutes
20210718_235316_r4927_bigtop_3
[vagrant@localhost bigtop-1.5.0]$ docker exec -it 20210718_235316_r4927_bigtop_1 bash
[root@579c6cc9d9e3 /]# jps
928 WebAppProxyServer
1424 NodeManager
1120 JobHistoryServer
2065 Jps
1848 DataNode
1657 NameNode
1021 ResourceManager
[root@579c6cc9d9e3 /]# exit
[vagrant@localhost bigtop-1.5.0]$ ./gradlew docker-provision-destroy
...
BUILD SUCCESSFUL in 15s
`docker exec` で任意のコマンドを
コンテナ上で実行可能
プロビジョニングしたコンテナは、通常通り
`docker ps` コマンドで確認できる
別のクラスタを起動する前には、既存の
クラスタを破棄する必要がある
© 2021 NTT DATA Corporation 29
• あ
Docker provisioner の使用方法 (続き)
$ ./gradlew tasks
...
Deployment tasks
----------------
docker-provisioner -
Provision a Bigtop stack cluster on Docker container(s). Default to CentOS and 1 node.
Properties:
-Pconfig=[CONFIG_FILE] (located under provisioner/docker/)
-Penable_local_repo
-Pimage=[DOCKER_IMAGE] (overwrites -POS and -Pprefix)
-Pmemory=[4g|8g|...]
-Pnum_instances=[NUM_INSTANCES]
-Pnexus=[NEXUS_URL] (NEXUS_URL is optional)
-POS=[centos-7|fedora-26|debian-9|ubuntu-16.04|opensuse-42.3]
-Pprefix=[trunk|1.2.1|1.2.0|1.1.0|...]
-Prepository=[REPO_URL]
-Prun_smoke_tests (run test components defined in config file)
-Psmoke_tests=[COMPONENTS]
-Pstack=[COMPONENTS]
...
Docker provisioner はオプションが多いため
`./gradlew tasks` コマンドで一覧を確認
© 2021 NTT DATA Corporation 30
Platforms
© 2021 NTT DATA Corporation 31
BigtopがサポートするのはLinuxの主要ディストリビューション
Hadoopが(実態として)Linux前提だから
主要部分はJavaで実装: 多くのプラットフォームで動く
CLIはbash (>=3.0): 多くのプラットフォームで動く
Windows用のhadoop.cmdも存在するがメンテされてない
libhadoop.c: Cで実装
オプショナルな機能や性能向上を提供
Linuxのシステムコール前提な部分が多い
開発者はUbuntu on x86_64が多数派(な印象)
それ以外のプラットフォームの問題が見落とされがち
Linux
© 2021 NTT DATA Corporation 32
Bigtop 3.0は各種Linuxディストリビューション提供のOpenJDK 8を利用
プロダクトのビルドにも、ランタイムにも
HadoopのupstreamはJava 11でも動くはずではある
開発環境のJava 11への移行はHadoop側でもWIP
Java
© 2021 NTT DATA Corporation 33
最近のLinuxディストリビューションではPython 2とPython 3が共存
/usr/bin/pythonは、どちらかへのシンボリックリンク
`#!/usr/bin/python`を含むスクリプトなどがあると、パッケージングで対処が必要
Python
© 2021 NTT DATA Corporation 34
Bigtopでビルドされたパッケージはinitスクリプトを利用
Bigtop 3.0がサポートするディストリビューションはすべてsystemdが前提
systemdのunit fileへの移行はこれから
Dockerコンテナ内でsystemctlを使うのに問題が起きがち
そもそもコンテナでsystemdを使うことは推奨されていないが
Bigtopはビルドしたパッケージの動作確認にDockerコンテナを使っている
systemd
© 2021 NTT DATA Corporation 35
Compatibility
© 2021 NTT DATA Corporation 36
プロダクト間の互換性は壊れがち
各プロダクトはそれぞれ独立の開発者グループによって開発されている
内部用(のつもり)のAPIが外から(歴史的経緯もあって)使われていることもある
依存ライブラリのセキュリティfixのためのupgradeで、非互換な変更が入ってきたりする
プロダクト間の互換性
© 2021 NTT DATA Corporation 37
Javaではpublicなクラス/メソッドが外部から呼べるAPI
削除したりシグネチャ/仕様を変えると非互換な変更
呼び出している側が動かなくなったりビルドが通らなくなったりする
モジュール間で参照するためだけにpublicなクラス/メソッドも多い
(Hadoopは)それを示すためのInterfaceAudienceアノテーションを使っている
@InterfaceAudience.PublicなものだけJavadocが出力される
@InterfaceAudience.Privateだとマイナーバージョンアップでも変更されうる
JavaのAPI
@InterfaceAudience.LimitedPrivate({ "MapReduce", "HBase" })
@InterfaceStability.Unstable
public class DistributedFileSystem extends FileSystem
implements KeyProviderTokenIssuer, BatchListingOperations {
APIが外部向けかどうかを示すアノテーションの例:
© 2021 NTT DATA Corporation 38
Hadoopエコシステムのプロダクト(の多く)はMavenを利用
多くのプロダクトに依存し多くのプロダクトから依存される
ミドルウェア間で競合しがちなdependencies
SLF4J, Log4j
commons-logging, commons-cli, commons-httpclient
Jackson
Guava
Netty, Jetty, Jersey
protobuf-java
ZooKeeper, Curator
...
Mavenのdependency
© 2021 NTT DATA Corporation 39
Javaで実装された(主に運用用の)APIを呼び出すモジュールを実行するシェルスクリプト
dependentがAPIではなくCLIを実行し、出力をparseすることもある
出力のフォーマットの変更や、warning出力の追加が問題になりがち (HADOOP-11257)
bash-3.0以上が前提 (HADOOP-9902)
CLI
© 2021 NTT DATA Corporation 40
Hadoopプロジェクト配布版binary tarballにもlibhadoop.soは入っている
Linuxなら動くというわけでもない
# ASFの正式なリリースはあくまでsource tarball
# binary tarballはある環境でビルドしたものをおまけ的に提供
# Hadoop 3.2.2の場合Ubuntu 16.04でビルドしたもの
nativeライブラリのポータビリティ
$ hadoop checknative
Native library checking:
hadoop: false
zlib: false
...
$ ldd libhadoop.so
./libhadoop.so: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libhadoop.so)
linux-vdso.so.1 => (0x00007ffc0959f000)
...
nativeライブラリが使えない状態:
© 2021 NTT DATA Corporation 41
Bigtopの基本素材
© 2021 NTT DATA Corporation 42
ソースコードはGitHubにある
ASF(Apache Software Foundation)のプロジェクト全般
# 2019年4月から
# https://blogs.apache.org/foundation/entry/the-apache-software-foundation-expands
開発の管理はJIRA
https://issues.apache.org/jira/projects/BIGTOP
issueを作ってパッチを添付するかpull requestのリンクを貼る
Bigtopのソースコード
$ git clone https://github.com/apache/bigtop
$ cd bigtop
Bigtopのソースコードの取得:
© 2021 NTT DATA Corporation 43
Gradleを利用して各種処理を実行する
Bigtopのタスク
$ ./gradlew tasks
> Task :tasks
------------------------------------------------------------
Tasks runnable from root project - Bigtop
------------------------------------------------------------
Apache Creadur tasks
--------------------
rat - Runs Apache Rat checks
Build tasks
-----------
assemble - Assembles the outputs of this project.
...
タスク一覧の表示:
© 2021 NTT DATA Corporation 44
部品表: 対象プロダクトとそのバージョンなどが記述されている
GroovyのConfigSlurperの書式
Bigtop BOM
$ cat bigtop.bom
bigtop { // *the name should be change: the parsing code depends on it*
version = "STACK-VERSION" // *required*
stack { // *required* Fundamental properties of the Stack: JDK, SDK, GDK, etc
'jdk' { version = '1.8'; version_base = version }
'scala' { version = '2.10.4'; version_base = version }
}
...
components {
'hadoop' {
name = 'hadoop'
relNotes = 'Apache Hadoop'
version { base = '3.2.2'; pkg = base; release = 1 }
tarball { destination = "${name}-${version.base}.tar.gz"
source = "${name}-${version.base}-src.tar.gz" }
url { download_path = "/$name/common/$name-${version.base}"
site = "${apache.APACHE_MIRROR}/${download_path}"
archive = "${apache.APACHE_ARCHIVE}/${download_path}" }
}
© 2021 NTT DATA Corporation 45
Bigtop toolchain
© 2021 NTT DATA Corporation 46
プロダクト群をビルドするための環境をセットアップする資材
Puppetをインストールするスクリプト
ビルドツール群をインストールPuppetマニフェスト
JDK, Maven, GCC, CMake, Protocol Buffers, lib*-devel, ...
OS提供パッケージだとバージョンが合わないものは個別にセットアップ
プラットフォーム差分に対応するためのワークアラウンドを入れることもある
例) aarch64対応のパッチを当ててprotobuf-2.5.0をビルド
bigtop_toolchain
$ sudo bigtop_toolchain/bin/puppetize.sh
$ ./gradlew toolchain
bigtop_toolchainによるビルド環境のセットアップ:
© 2021 NTT DATA Corporation 47
最近のHadoopやHBaseはprotobuf-maven-pluginを利用
ビルド過程で.protoから.javaのソースを生成するため
protocのバイナリが自動的にダウンロードされる
バイナリが未提供のプラットフォーム/バージョンでの対応が必要
com.google.protobuf:protoc < 3.5.0 ではaarch64用バイナリが未提供
com.google.protobuf:protoc < 3.7.0 ではppcle64バイナリが未提供
protobuf-maven-plugin
if [ $HOSTTYPE = "powerpc64le" ] ; then
mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 
-Dclassifier=linux-ppcle_64 -Dpackaging=exe -Dfile=/usr/local/bin/protoc
mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.5.1-1 
-Dclassifier=linux-ppcle_64 -Dpackaging=exe -Dfile=/usr/local/protobuf-3.5.1.1/bin/protoc
fi
if [ $HOSTTYPE = "aarch64" ] ; then
mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 
-Dclassifier=linux-aarch_64 -Dpackaging=exe -Dfile=/usr/local/bin/protoc
fi
do-component-build内でローカルビルドしたprotocからアーティファクトをインストール:
© 2021 NTT DATA Corporation 48
Bigtop packaging
© 2021 NTT DATA Corporation 49
プロダクトをビルドしてパッケージングする
「プロダクト名-pkg」というGradleタスクで実行
.rpmと.debの2種類に対応
その環境に応じたパッケージが作られる
Red Hat系なら.rpm
Debian系なら.deb
bigtop-package
$ ./gradlew hadoop-pkg
$ ./gradlew zookeeper-pkg
$ ./gradlew bigtop-jsvc-pkg bigtop-utils-pkg bigtop-groovy-pkg
パッケージングタスクの実行例:
© 2021 NTT DATA Corporation 50
共通のビルド手順とインストール手順を.debと.rpm用の資材から呼び出して使う
ビルド手順: do-component-build
インストール手順: install_プロダクト名.sh
パッケージング資材
bigtop-packages
├── src
│ ├── common
│ │ ├── hadoop
│ │ │ ├── do-component-build
│ │ │ ├── install_hadoop.sh
│ │
│ ├── deb
│ │ ├── hadoop
│ │ │ ├── control
│ │ │ ├── rules
│ │
│ ├── rpm
│ │ ├── hadoop
│ │ │ ├── SPECS
│ │ │ │ ├── hadoop.spec
パッケージング資材の配置:
© 2021 NTT DATA Corporation 51
パッケージング時にpatch.*diffという名前のファイルをpatchとして適用
リリース版で解決できない問題に対応するため
特定プラットフォームでビルドが失敗する問題への対処
# Ubuntu, x86_64を暗黙に想定しているパターンが多いような
パッケージング対象バージョンに含まれない修正のバックポート
互換性を壊す変更のrevert
プロダクト間のdependencyのつじつま合わせ
プロダクトA, B, Cの3つが同時に動くバージョンの組み合わせが存在しないなど
独自に修正するとしてもpom.xmlぐらい
patchを書いたらなるべくfeedback..
Bigtopパッケージングにおけるパッチ適用
$ find bigtop-packages/src/common/hadoop -name 'patch*.diff' | sort
bigtop-packages/src/common/hadoop/patch0-revert-HADOOP-16598.diff
bigtop-packages/src/common/hadoop/patch1-HADOOP-15939.diff
bigtop-packages/src/common/hadoop/patch2-exclude-spotbugs-annotations.diff
bigtop-packages/src/common/hadoop/patch3-fix-broken-dir-detection.diff
Bigtopが適用するpatch:
© 2021 NTT DATA Corporation 52
$BIGTOP_HOME/output 下に出力されるパッケージファイルでリポジトリを作成する
repoタスクで実行
その環境に応じたリポジトリが作られる (Red Hat系ならYumの、Debian系ならAptの)
パッケージリポジトリの作成
$ ./gradlew repo
$ tree output
...
├── hadoop
│ ├── hadoop-3.2.2-1.el8.src.rpm
│ └── x86_64
│ ├── hadoop-3.2.2-1.el8.x86_64.rpm
│ ├── hadoop-client-3.2.2-1.el8.x86_64.rpm
│ ├── hadoop-conf-pseudo-3.2.2-1.el8.x86_64.rpm
...
│ ├── hadoop-hdfs-3.2.2-1.el8.x86_64.rpm
...
├── repodata
...
│ ├── aa0ff69b812187315d6825fcf7d862c326ac1ba42bf9625e57b826cd6462a68c-filelists.xml.gz
│ ├── cb8d35ada5c22a89e1f65a62229acde45b4175d5281a513fc6e1190d0ce4544c-filelists.sqlite.bz2
│ ├── f2077b7afd203a11428c21ca3c41f02a786fc2f514888274f12f514673d4f88f-primary.xml.gz
│ └── repomd.xml
リポジトリの作成(CentOS 8で実行した場合の例):
© 2021 NTT DATA Corporation 53
「プロダクト名-pkg-ind」というGradleタスクで実行(in Docker container)
異なるOS用のパッケージをビルドできる
Docker Hubのbigtop/slavesのイメージを利用
-POS=centos-7 -Pprefix=trunkだとtrunk-centos-7タグになる(x86_64の場合)
CPUアーキテクチャはビルド環境に応じて決まる
aarch64のマシン上でやるとtrunk-centos-7-aarch64タグ
repo-indタスクは、repoタスクをDockerコンテナで実行
Docker provisioner(後述)と組み合わせてテストに利用
Dockerコンテナを利用したパッケージング
$ ./gradlew hadoop-pkg-ind -POS=centos-7 -Pprefix=trunk
$ ./gradlew repo-ind -POS=centos-7 -Pprefix=trunk
パッケージングタスクの実行例:
© 2021 NTT DATA Corporation 54
Bigtop provisioning
© 2021 NTT DATA Corporation 55
Dockerコンテナを起動してPuppetでクラスタを構築するスクリプト
事前にDockerとdocker-composeのセットアップが必要
./gradlew docker-provisionerで実行できる(がスクリプトを直接使った方が微妙に便利..)
Docker provisioner
$ cd provisioner/docker
$ ./docker-hadoop.sh 
--create 3 
--image bigtop/puppet:trunk-centos-8 
--memory 8g 
--stack hdfs,yarn,mapreduce 
--repo file:///bigtop-home/output 
--disable-gpg-check
$ ./docker-hadoop.sh --list
Name Command State Ports
------------------------------------------------------------
20210124_122554_r12819_bigtop_1 /sbin/init Up
20210124_122554_r12819_bigtop_2 /sbin/init Up
20210124_122554_r12819_bigtop_3 /sbin/init Up
$ ./docker-hadoop.sh --exec 1 /bin/bash
...
Dockerコンテナを利用したデプロイの例:
© 2021 NTT DATA Corporation 56
docker-hadoop.sh --createで出力されたファイルを見ると参考になる
Bigtopのソースツリーを/bigtop-homeにマウント
Hieraの設定を生成してpuppet apply
Docker provisionerの仕組み
$ cat docker-compose.yml
bigtop:
...
volumes:
- ../../:/bigtop-home
- ./config/hiera.yaml:/etc/puppet/hiera.yaml
- ./config/hieradata:/etc/puppet/hieradata
- ./config/hosts:/etc/hosts
- /sys/fs/cgroup:/sys/fs/cgroup:ro
$ cat config/hieradata/site.yaml
bigtop::hadoop_head_node: b2d614be6039.bigtop.apache.org
hadoop::hadoop_storage_dirs: [/data/1, /data/2]
bigtop::bigtop_repo_uri: file:///bigtop-home/output
bigtop::bigtop_repo_gpg_check: false
hadoop_cluster_node::cluster_components: [hdfs,yarn,mapreduce]
hadoop_cluster_node::cluster_nodes: [172.17.0.3, 172.17.0.4, 172.17.0.2]
...
Docker provisionerの設定ファイル(の一部):
© 2021 NTT DATA Corporation 57
Hadoopクラスタを構築するためのPuppetマニフェスト
Docker provisioner抜きで使うこともできる
bigtop-deploy
$ tree bigtop-deploy/puppet
bigtop-deploy/puppet
├── hieradata
│ ├── bigtop
│ │ ├── cluster.yaml
...
│ └── site.yaml
├── hiera.yaml
├── manifests
│ ├── bigtop_repo.pp
│ ├── cluster.pp
...
│ ├── hadoop
...
│ │ ├── manifests
│ │ │ └── init.pp
│ │ └── templates
│ │ ├── container-executor.cfg
│ │ ├── core-site.xml
...
Puppetマニフェストのファイルツリー:
© 2021 NTT DATA Corporation 58
スクリプト経由でコンテナ停止と、一時ファイル等の削除
クラスタ起動中の問題などでやり直す場合も、まず一度--destroyしてから
Dockerクラスタの終了
$ ./docker-hadoop.sh --destroy
Dockerコンテナクラスタの停止:
© 2021 NTT DATA Corporation 59
Bigtop tests
© 2021 NTT DATA Corporation 60
パッケージをデプロイした状態で動くかざっくり確認するためのテスト
おもにGroovyで書かれている
CLIを実行して期待する出力が得られるかを確認というパターンが多い
smoke-tests
$ cat bigtop-tests/test-artifacts/hadoop/src/main/groovy/.../hdfs/TestTextSnappy.groovy
...
@Test
void testTextSnappy() {
String cmd = "hadoop fs -text ${testDir}/${snappyFileName}"
System.out.println(cmd)
sh.exec(cmd)
String output = sh.getOut().join("n")
logError(sh)
String expected = "1traffertyt31n2tjonest33n3tsteinbergt33"
System.out.println("Expected output:n${expected}")
System.out.println("Actual output:n${output}")
assertEquals("Incorrect output", expected, output)
}
smoke-testsのテストケースの例:
© 2021 NTT DATA Corporation 61
Docker provisionerで起動したクラスタ上でテストを実行できる
やっていることはgradleタスクの実行
--smoke-test hdfs だと bigtop-tests:smoke-tests:hdfs:test タスク
Docker provisionerでtestを実行
$ ./docker-hadoop.sh --smoke-tests hdfs,yarn,mapreduce
起動済みのDockerコンテナを利用してsmoke testsを実行:
© 2021 NTT DATA Corporation 62
Summary
© 2021 NTT DATA Corporation 63
BigtopはHadoopエコシステムのプロダクトの「機能する組み合わせ」を提供
Bigtop 3.0はHadoop 3系とSpark 3系をパッケージする最初のリリース
Bigtop 3.1以降でHadoop 3.3以降への対応を予定
まとめ
© 2021 NTT DATA Corporation
本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

More Related Content

What's hot

Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...NTT DATA Technology & Innovation
 
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...NTT DATA Technology & Innovation
 
Pacemakerを使いこなそう
Pacemakerを使いこなそうPacemakerを使いこなそう
Pacemakerを使いこなそうTakatoshi Matsuo
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!NTT DATA Technology & Innovation
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線Motonori Shindo
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkTakanori Suzuki
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Cloudera Japan
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報Masahiko Sawada
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021Preferred Networks
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Yuki Gonda
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...NTT DATA Technology & Innovation
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)NTT DATA Technology & Innovation
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Noritaka Sekiyama
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Ken SASAKI
 

What's hot (20)

Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
 
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
 
Pacemakerを使いこなそう
Pacemakerを使いこなそうPacemakerを使いこなそう
Pacemakerを使いこなそう
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
 
MapReduce/YARNの仕組みを知る
MapReduce/YARNの仕組みを知るMapReduce/YARNの仕組みを知る
MapReduce/YARNの仕組みを知る
 
楽天がHadoopを使う理由
楽天がHadoopを使う理由楽天がHadoopを使う理由
楽天がHadoopを使う理由
 
Hadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返りHadoopエコシステムのデータストア振り返り
Hadoopエコシステムのデータストア振り返り
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
 

Similar to Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)

【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座Masahito Zembutsu
 
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)NTT DATA Technology & Innovation
 
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)VirtualTech Japan Inc.
 
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料VirtualTech Japan Inc.
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf勇 黒沢
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)NTT DATA Technology & Innovation
 
20121119.dodai projectの紹介
20121119.dodai projectの紹介20121119.dodai projectの紹介
20121119.dodai projectの紹介Osamu Habuka
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Yasuhiro Arai
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osakaNaotaka Jay HOTTA
 
DeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例maebashi
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組みNTT DATA OSS Professional Services
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondTaisuke Yamada
 
OpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseOpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseHideki Saito
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

Similar to Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料) (20)

【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
 
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
 
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
DeNA private cloud のその後 - OpenStack最新情報セミナー(2017年3月)
 
Fig
FigFig
Fig
 
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
RDOを使ったOpenStack Havana - Neutron 構築編 :補足資料
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
 
Openstack+Ceph設定ガイド
Openstack+Ceph設定ガイドOpenstack+Ceph設定ガイド
Openstack+Ceph設定ガイド
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 
20121119.dodai projectの紹介
20121119.dodai projectの紹介20121119.dodai projectの紹介
20121119.dodai projectの紹介
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
DeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechcon
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
 
OpenStack QuickStart - Icehouse
OpenStack QuickStart - IcehouseOpenStack QuickStart - Icehouse
OpenStack QuickStart - Icehouse
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
20170303 java9 hadoop
20170303 java9 hadoop20170303 java9 hadoop
20170303 java9 hadoop
 

More from NTT DATA Technology & Innovation

OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)NTT DATA Technology & Innovation
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方NTT DATA Technology & Innovation
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...NTT DATA Technology & Innovation
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)NTT DATA Technology & Innovation
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...NTT DATA Technology & Innovation
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)NTT DATA Technology & Innovation
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...NTT DATA Technology & Innovation
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

More from NTT DATA Technology & Innovation (20)

OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Recently uploaded

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Recently uploaded (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)

  • 1. © 2021 NTT DATA Corporation 2021/08/28 関 堅吾・岩崎 正剛 日本Hadoopユーザ会/株式会社NTTデータ Apache Bigtopによるオープンなビッグデータ処理基盤の構築
  • 2. © 2021 NTT DATA Corporation 2 Apache Bigtopの概要
  • 3. © 2021 NTT DATA Corporation 3 • 公式サイト (https://bigtop.apache.org/) より: • "Bigtop is an Apache Foundation project for Infrastructure Engineers and Data Scientists looking for comprehensive packaging, testing, and configuration of the leading open source big data components." • 『Bigtopは、先進的なビッグデータ関連OSSのパッケージングやテスト、 設定を求めているインフラエンジニアやデータサイエンティストのための Apacheソフトウェア財団のプロジェクトです。』 • 一言で言うと「Hadoop・Spark を中心としたデータ基盤を容易に構築する ための OSS」です。 Apache Bigtopとは何か
  • 4. © 2021 NTT DATA Corporation 4 Apache Bigtop の歴史 (近日リリース予定) 2020 2019 2018 2017 2016 2015 2021 2012 2011 Cloudera社からApacheソフトウェア財団に、incubatorプロジェクトとして寄贈される Apache incubator プロジェクトからトップレベルプロジェクトに昇格
  • 5. © 2021 NTT DATA Corporation 5 Bigtop 3.0のソフトウェアスタック コンポーネント バージョン 説明 Alluxio 2.4.1 ストレージ仮想化 Ambari 2.7.5 クラスタ構築・管理 Elasticsearch 5.6.14 全文検索エンジン Flink 1.11.3 ストリーム処理系 GPDB 5.28.5 MPP Hadoop 3.2.2 分散ファイルシステム・ 並列分散処理基盤 HBase 2.2.6 分散KVS Hive 3.1.2 Hadoop用クエリ処理系 Kafka 2.4.1 分散メッセージングシステム Kibana 5.4.1 検索フロントエンド・データ 可視化 Livy 0.7.1 Spark用RESTゲートウェイ コンポーネント バージョン 説明 Logstash 5.4.1 ログ転送 Oozie 5.2.1 ジョブスケジューラ Phoenix 5.1.0 HBase用クエリ処理系 Solr 8.7.0 全文検索エンジン Spark 3.0.1 並列分散処理エンジン・ ストリーム処理系 Sqoop 1.4.7 バルクローダ Tez 0.10.0 並列分散処理エンジン YCSB 0.17.0 ベンチマークツール Zeppelin 0.9.0 ノートブック Zookeeper 3.4.14 分散ロックマネージャ ※3.0 で削除されたコンポーネント Flume, Giraph, Ignite, Mahout, QFS, Sqoop 2
  • 6. © 2021 NTT DATA Corporation 6 • 2021/8現在、残る課題は数件程度 • 既にリリース用のブランチ (branch-3.0) も切られており、致命的な問題がなければ 1, 2ヶ月以内にリリースされる見込み Bigtop 3.0 リリースに向けた開発状況
  • 7. © 2021 NTT DATA Corporation 7 Apache Bigtopの使い方
  • 8. © 2021 NTT DATA Corporation 8 1. 要件を満たすソフトウェアの選定と、それらの間の相互運用性の確認 2. 選定したソフトウェアを(場合によっては大量の)サーバ群にインストールし、 それらのサーバ上で各製品を適切に設定 3. 設定を施したサーバ群が、クラスタとして正しく動作していることを確認 4. 必要に応じ、上記の手順をローカル環境やステージング環境で事前に確認 データ基盤構築の流れ
  • 9. © 2021 NTT DATA Corporation 9 1. 要件を満たすソフトウェアの選定と、それらの間の相互運用性の確認 →相互運用性を確認済みの幅広いビッグデータ関連ソフトウェアを、debやrpmと いったパッケージとして提供 2. 選定したソフトウェアを(場合によっては大量の)サーバ群にインストールし、 それらのサーバ上で各製品を適切に設定 →各ソフトウェアのデプロイを自動化するための Puppet マニフェストを提供 3. 設定を施したサーバ群が、クラスタとして正しく動作していることを確認 →各ソフトウェアの主要な機能が問題なく動作していることを確認するための、 スモークテストを提供 4. 必要に応じ、上記の手順をローカル環境やステージング環境で事前に確認 →Dockerコンテナにソフトウェアをデプロイし、スモークテストや試用が行える Provisionerを提供 データ基盤構築のためにBigtopが提供する機能
  • 10. © 2021 NTT DATA Corporation 10 1. 要件を満たすソフトウェアの選定と、それらの間の相互運用性の確認 →相互運用性を確認済みの幅広いビッグデータ関連ソフトウェアを、debやrpmと いったパッケージとして提供 2. 選定したソフトウェアを(場合によっては大量の)サーバ群にインストールし、 それらのサーバ上で各製品を適切に設定 →各ソフトウェアのデプロイを自動化するための Puppet マニフェストを提供 3. 設定を施したサーバ群が、クラスタとして正しく動作していることを確認 →各ソフトウェアの主要な機能が問題なく動作していることを確認するための、 スモークテストを提供 4. 必要に応じ、上記の手順をローカル環境やステージング環境で事前に確認 →Dockerコンテナにソフトウェアをデプロイし、スモークテストや試用が行える Provisionerを提供 データ基盤構築のためにBigtopが提供する機能
  • 11. © 2021 NTT DATA Corporation 11 • Bigtop はコンポーネント間の相互運用性が確認されたバージョン同士の組合せを、deb/rpm形式の パッケージとして提供している。これにより、以下のメリットがある。 • ユーザ側で、問題なく動作するバージョンの組合せを検証・特定しなくて済む • Linux ディストリビューション標準のパッケージマネージャ (yum/dnf/apt) が使えることで、 • 標準化された手順でインストール・アンインストールを実施できる • 依存しているソフトウェアも自動でインストールしてくれる • インストールしたソフトを一元管理できる • Bigtop では、以下の Linux ディストリビューション と CPU アーキテクチャをサポートしている 1. ビッグデータ関連OSSをパッケージとして提供 Linux ディストリ ビューション Bigtop 1.5.0 Bigtop 3.0.0 (近日リリース) CentOS 7, 8 7, 8 Fedora 31 33 Debian 9, 10 9, 10 Ubuntu 16.04, 18.04 18.04, 20.04 CPU アーキテクチャ Bigtop 1.5.0 Bigtop 3.0.0 (近日リリース) x86_64 〇 〇 aarch64 〇 〇 ppc64le - 〇
  • 12. © 2021 NTT DATA Corporation 12 Bigtop の公式サイト (https://bigtop.apache.org/) から、以下のリンクを辿って取得 パッケージを公開しているリポジトリを利用するための設定ファイル Linux ディストリビューション別に、 rpm 用の .repo ファイルや deb 用の .list ファイルが ダウンロード可能
  • 13. © 2021 NTT DATA Corporation 13 • RPMパッケージを用いたコンポーネントのインストールは以下の3ステップ パッケージのインストール手順 (CentOS/Fedora の場合) $ sudo wget -P /etc/yum.repos.d -q https://downloads.apache.org/bigtop/bigtop-1.5.0/repos/centos-7/bigtop.repo $ sudo rpm --import https://downloads.apache.org/bigtop/bigtop-1.5.0/repos/GPG-KEY-bigtop $ sudo yum install hadoop $ hadoop version Hadoop 2.10.1 1. リポジトリ設定ファイルをダウンロード・配置 2. GPG キーをインポート 3. リポジトリ情報のアップデート・コンポーネントのインストール
  • 14. © 2021 NTT DATA Corporation 14 $ sudo wget -P /etc/apt/sources.list.d -q https://downloads.apache.org/bigtop/bigtop-1.5.0/repos/ubuntu-18.04/bigtop.list $ curl -s https://downloads.apache.org/bigtop/bigtop-1.5.0/repos/GPG-KEY-bigtop | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install hadoop $ hadoop version Hadoop 2.10.1 • debパッケージを用いたコンポーネントのインストール手順も同様 パッケージのインストール手順 (Debian/Ubuntu の場合) 1. リポジトリ設定ファイルをダウンロード・配置 2. GPG キーをインポート 3. リポジトリ情報のアップデート・コンポーネントのインストール
  • 15. © 2021 NTT DATA Corporation 15 1. 要件を満たすソフトウェアの選定と、それらの間の相互運用性の確認 →相互運用性を確認済みの幅広いビッグデータ関連ソフトウェアを、debやrpmと いったパッケージとして提供 2. 選定したソフトウェアを(場合によっては大量の)サーバ群にインストールし、 それらのサーバ上で各製品を適切に設定 →各ソフトウェアのデプロイを自動化するための Puppet マニフェストを提供 3. 設定を施したサーバ群が、クラスタとして正しく動作していることを確認 →各ソフトウェアの主要な機能が問題なく動作していることを確認するための、 スモークテストを提供 4. 必要に応じ、上記の手順をローカル環境やステージング環境で事前に確認 →Dockerコンテナにソフトウェアをデプロイし、スモークテストや試用が行える Provisionerを提供 データ基盤構築のためにBigtopが提供する機能
  • 16. © 2021 NTT DATA Corporation 16 • パッケージの導入でインストール作業は省力化できたが、以下の問題は解決されていない • サーバの台数が多い場合、1台1台インストールのコマンドを投入するのは大変 • パッケージのインストール後も、各ソフトウェアに適切な設定を施したり、サービスを 起動したりといった作業が必要 • Bigtop は Puppet マニフェストを提供することで、これらの作業を自動化 • Puppet (https://puppet.com/open-source/) はRubyで記述されたOSSの構成管理 ツールで、2005年から開発されており十分な実績がある • Puppet manifest はシステムの「あるべき姿」を記述した設定ファイルで、この定義 に従って Puppet がパッケージのインストールや設定、サービスの起動などを行う • Puppet は Hiera (https://puppet.com/docs/puppet/latest/hiera.html) というキー バリュー型の設定管理システムを備える • ユーザが Hiera ファイルに適切な値を設定して Puppet を実行することで、Puppet が設定ファイルの対応する箇所に指定した値を設定してくれる 2. デプロイを自動化するための Puppet マニフェストの提供
  • 17. © 2021 NTT DATA Corporation 17 • Bigtop の公式サイト (https://bigtop.apache.org/) から、以下のリンクを辿って取得 • apt・yumリポジトリの設定ファイルとは別に配布されている • 後述するスモークテスト関連のファイルなども本ファイルに含まれる Puppet マニフェストのダウンロード
  • 18. © 2021 NTT DATA Corporation 18 • Puppet マニフェストを用いたコンポーネントのデプロイは、以下の4ステップ (次ページに続く) Puppet マニフェストを用いたコンポーネントのデプロイ手順 $ curl -sLO https://downloads.apache.org/bigtop/bigtop-1.5.0/bigtop-1.5.0-project.tar.gz $ tar xf bigtop-1.5.0-project.tar.gz $ cd bigtop-1.5.0 $ sudo bigtop_toolchain/bin/puppetize.sh $ vi bigtop-deploy/puppet/hieradata/site.yaml $ cat bigtop-deploy/puppet/hieradata/site.yaml --- bigtop::hadoop_head_node: "fqdn.of.head.node" hadoop::hadoop_storage_dirs: - /data hadoop_cluster_node::cluster_components: - hdfs - yarn - mapreduce 1. Bigtop の tarball をダウンロードし展開 2. 中に含まれるスクリプトを実行して Puppet をインストール 3. Hiera ファイルを編集。最低限必要な設定は左記の3 つだが、インストールするコンポーネントに応じて必 要な設定を記述する。 • bigtop::hadoop_head_node: Hadoop のマスター ノードのFQDN • hadoop::hadoop_storage_dirs: Hadoop のデータ格 納先ファイルパス • hadoop_cluster_node::cluster_components: インス トールするコンポーネントのリスト。例では HDFS, YARN, MapReduceをインストールしている。
  • 19. © 2021 NTT DATA Corporation 19 Puppet マニフェストを用いたコンポーネントのデプロイ手順 (続き) $ sudo cp -r bigtop-deploy/puppet/hiera* /etc/puppet $ sudo puppet apply --parser future --modulepath=bigtop-deploy/puppet/modules:/etc/puppet/modules bigtop-deploy/puppet/manifests (略) Notice: Finished catalog run in 65.99 seconds $ echo $? 0 $ sudo jps 7873 ResourceManager 8722 DataNode 8486 NodeManager 8922 Jps 8251 NameNode 7775 WebAppProxyServer 8159 JobHistoryServer 4. Hiera ファイル群を所定のパスに コピーし、Puppet を実行 ※一連の手順を parallel-ssh (http://code.google.com/p/parallel-ssh/) など を用いて実行することで、クラスタ内の全 サーバでデプロイを行うことが可能
  • 20. © 2021 NTT DATA Corporation 20 1. 要件を満たすソフトウェアの選定と、それらの間の相互運用性の確認 →相互運用性を確認済みの幅広いビッグデータ関連ソフトウェアを、debやrpmと いったパッケージとして提供 2. 選定したソフトウェアを(場合によっては大量の)サーバ群にインストールし、 それらのサーバ上で各製品を適切に設定 →各ソフトウェアのデプロイを自動化するための Puppet マニフェストを提供 3. 設定を施したサーバ群が、クラスタとして正しく動作していることを確認 →各ソフトウェアの主要な機能が問題なく動作していることを確認するための、 スモークテストを提供 4. 必要に応じ、上記の手順をローカル環境やステージング環境で事前に確認 →Dockerコンテナにソフトウェアをデプロイし、スモークテストや試用が行える Provisionerを提供 データ基盤構築のためにBigtopが提供する機能
  • 21. © 2021 NTT DATA Corporation 21 • コンポーネントのデプロイが完了したら、それらの主要な機能が問題なく動作していること を確かめたい • そのために Bigtop は、各コンポーネントのスモークテストを提供している 3. 各コンポーネントの動作確認のためのスモークテストの提供
  • 22. © 2021 NTT DATA Corporation 22 スモークテストの実行方法 • スモークテストの実行は以下の4ステップ。 $ curl -sLO https://downloads.apache.org/bigtop/bigtop-1.5.0/bigtop-1.5.0-project.tar.gz $ tar xf bigtop-1.5.0-project.tar.gz $ cd bigtop-1.5.0 $ rm -rf bigtop-tests/smoke-tests/odpi-runtime $ . /usr/lib/bigtop-utils/bigtop-detect-javahome $ export HADOOP_CONF_DIR=/etc/hadoop/conf $ ./gradlew bigtop-tests:smoke-tests:yarn:test -Psmoke.tests --info org.apache.bigtop.itest.hadoop.yarn.TestNode > testNodeBasic STANDARD_OUT -list -status org.apache.bigtop.itest.hadoop.yarn.TestRmAdmin > testRmAdminBasic STANDARD_OUT -help -getGroups ... 2. Bigtop 1.5 向けのワークアラウンド (既に使われていない ファイル群の削除。近日リリースされる Bigtop 3.0 では不要) 1. Bigtop の tarball をダウンロードし展開 (前の節で使用したものと同じファイル) 3. JAVA_HOME, およびテストの実行に必要な環境変数の定義. (コンポーネントごとに必要な環境変数は異なる。確認するには展開した ファイルの bigtop-tests/smoke-tests/コンポーネント名/build.gradle の doFirst メソッドを参照) 4. Gradle wrapper からスモークテストを実行。 ここでは YARN のテストを行っている。
  • 23. © 2021 NTT DATA Corporation 23 スモークテストの実行方法 (続き) ... Gradle Test Executor 2 finished executing tests. > Task :bigtop-tests:smoke-tests:yarn:test Finished generating test XML results (0.021 secs) into: /home/sekikn/bigtop- 1.5.0/bigtop-tests/smoke-tests/yarn/build/test-results/test Generating HTML test report... Finished generating test html results (0.035 secs) into: /home/sekikn/bigtop- 1.5.0/bigtop-tests/smoke-tests/yarn/build/reports/tests/test Now testing... :bigtop-tests:smoke-tests:yarn:test (Thread[Daemon worker,5,main]) completed. Took 14.78 secs. BUILD SUCCESSFUL in 55s 7 actionable tasks: 5 executed, 2 up-to-date Stopped 1 worker daemon(s). スモークテストに成功 テストの詳細な結果を知りたい場合は これらのファイルを参照
  • 24. © 2021 NTT DATA Corporation 24 スモークテスト実行結果のサンプル
  • 25. © 2021 NTT DATA Corporation 25 1. 要件を満たすソフトウェアの選定と、それらの間の相互運用性の確認 →相互運用性を確認済みの幅広いビッグデータ関連ソフトウェアを、debやrpmと いったパッケージとして提供 2. 選定したソフトウェアを(場合によっては大量の)サーバ群にインストールし、 それらのサーバ上で各製品を適切に設定 →各ソフトウェアのデプロイを自動化するための Puppet マニフェストを提供 3. 設定を施したサーバ群が、クラスタとして正しく動作していることを確認 →各ソフトウェアの主要な機能が問題なく動作していることを確認するための、 スモークテストを提供 4. 必要に応じ、上記の手順をローカル環境やステージング環境で事前に確認 →Dockerコンテナにソフトウェアをデプロイし、スモークテストや試用が行える Provisionerを提供 データ基盤構築のためにBigtopが提供する機能
  • 26. © 2021 NTT DATA Corporation 26 • いきなり商用環境にデータ基盤を構築する前に、ローカルやステージング環境で 確認したいケースは多々ある • Bigtop に含まれるコンポーネントで業務上・システム上の要件を満たせるか、 事前に検証したい • 構築手順が正しいことを事前に確認したい • ソフトウェアをバージョンアップすることで、既存のアプリケーションが問題 なく動作するか確認したい、など • このため、Bigtop は Docker コンテナ上にコンポーネントをデプロイできる Provisioner と呼ばれる機能を提供している • 事前に Docker, Docker Compose がインストールされ、Gradle wrapper を 実行するユーザから使えるよう設定されている必要がある 4. Docker コンテナ上でデプロイやテストを行うための Provisioner の提供
  • 27. © 2021 NTT DATA Corporation 27 Docker provisioner の使用方法 $ ./gradlew docker-provisioner -Pnum_instances=3 -POS=centos-7 -Pprefix=1.5.0 -Pstack=hdfs,yarn > Task :docker-provisioner ... Pulling bigtop (bigtop/puppet:1.5.0-centos-7)... 1.5.0-centos-7: Pulling from bigtop/puppet ... Creating 20210718_235316_r4927_bigtop_3 ... done Creating 20210718_235316_r4927_bigtop_1 ... done Creating 20210718_235316_r4927_bigtop_2 ... done ... Notice: Roles to deploy: [nodemanager, mapred-app, datanode] Notice: Roles to deploy: [nodemanager, mapred-app, datanode] Notice: Roles to deploy: [resourcemanager, nodemanager, mapred-app, hadoop-client, namenode, datanode] ... BUILD SUCCESSFUL in 9m 6s 3台の Docker コンテナ上 (OS は CentOS 7) に Bigtop 1.5.0 の HDFS, YARN をインストールするコマンドを実行 (ローカルに存在しなければ) Bigtop 1.5.0 の CentOS 7 イメージが pull され、そのイメージ からコンテナが作成される 指定したコンポーネントの Puppet マニフェストを使って、コンテナ上 へのデプロイが実行される
  • 28. © 2021 NTT DATA Corporation 28 Docker provisioner の使用方法 (続き) [vagrant@localhost bigtop-1.5.0]$ docker ps 2988ef9bd930 bigtop/puppet:1.5.0-centos-7 "/sbin/init" 10 minutes ago Up 10 minutes 20210718_235316_r4927_bigtop_2 579c6cc9d9e3 bigtop/puppet:1.5.0-centos-7 "/sbin/init" 10 minutes ago Up 10 minutes 20210718_235316_r4927_bigtop_1 1cdbe4c135ed bigtop/puppet:1.5.0-centos-7 "/sbin/init" 10 minutes ago Up 10 minutes 20210718_235316_r4927_bigtop_3 [vagrant@localhost bigtop-1.5.0]$ docker exec -it 20210718_235316_r4927_bigtop_1 bash [root@579c6cc9d9e3 /]# jps 928 WebAppProxyServer 1424 NodeManager 1120 JobHistoryServer 2065 Jps 1848 DataNode 1657 NameNode 1021 ResourceManager [root@579c6cc9d9e3 /]# exit [vagrant@localhost bigtop-1.5.0]$ ./gradlew docker-provision-destroy ... BUILD SUCCESSFUL in 15s `docker exec` で任意のコマンドを コンテナ上で実行可能 プロビジョニングしたコンテナは、通常通り `docker ps` コマンドで確認できる 別のクラスタを起動する前には、既存の クラスタを破棄する必要がある
  • 29. © 2021 NTT DATA Corporation 29 • あ Docker provisioner の使用方法 (続き) $ ./gradlew tasks ... Deployment tasks ---------------- docker-provisioner - Provision a Bigtop stack cluster on Docker container(s). Default to CentOS and 1 node. Properties: -Pconfig=[CONFIG_FILE] (located under provisioner/docker/) -Penable_local_repo -Pimage=[DOCKER_IMAGE] (overwrites -POS and -Pprefix) -Pmemory=[4g|8g|...] -Pnum_instances=[NUM_INSTANCES] -Pnexus=[NEXUS_URL] (NEXUS_URL is optional) -POS=[centos-7|fedora-26|debian-9|ubuntu-16.04|opensuse-42.3] -Pprefix=[trunk|1.2.1|1.2.0|1.1.0|...] -Prepository=[REPO_URL] -Prun_smoke_tests (run test components defined in config file) -Psmoke_tests=[COMPONENTS] -Pstack=[COMPONENTS] ... Docker provisioner はオプションが多いため `./gradlew tasks` コマンドで一覧を確認
  • 30. © 2021 NTT DATA Corporation 30 Platforms
  • 31. © 2021 NTT DATA Corporation 31 BigtopがサポートするのはLinuxの主要ディストリビューション Hadoopが(実態として)Linux前提だから 主要部分はJavaで実装: 多くのプラットフォームで動く CLIはbash (>=3.0): 多くのプラットフォームで動く Windows用のhadoop.cmdも存在するがメンテされてない libhadoop.c: Cで実装 オプショナルな機能や性能向上を提供 Linuxのシステムコール前提な部分が多い 開発者はUbuntu on x86_64が多数派(な印象) それ以外のプラットフォームの問題が見落とされがち Linux
  • 32. © 2021 NTT DATA Corporation 32 Bigtop 3.0は各種Linuxディストリビューション提供のOpenJDK 8を利用 プロダクトのビルドにも、ランタイムにも HadoopのupstreamはJava 11でも動くはずではある 開発環境のJava 11への移行はHadoop側でもWIP Java
  • 33. © 2021 NTT DATA Corporation 33 最近のLinuxディストリビューションではPython 2とPython 3が共存 /usr/bin/pythonは、どちらかへのシンボリックリンク `#!/usr/bin/python`を含むスクリプトなどがあると、パッケージングで対処が必要 Python
  • 34. © 2021 NTT DATA Corporation 34 Bigtopでビルドされたパッケージはinitスクリプトを利用 Bigtop 3.0がサポートするディストリビューションはすべてsystemdが前提 systemdのunit fileへの移行はこれから Dockerコンテナ内でsystemctlを使うのに問題が起きがち そもそもコンテナでsystemdを使うことは推奨されていないが Bigtopはビルドしたパッケージの動作確認にDockerコンテナを使っている systemd
  • 35. © 2021 NTT DATA Corporation 35 Compatibility
  • 36. © 2021 NTT DATA Corporation 36 プロダクト間の互換性は壊れがち 各プロダクトはそれぞれ独立の開発者グループによって開発されている 内部用(のつもり)のAPIが外から(歴史的経緯もあって)使われていることもある 依存ライブラリのセキュリティfixのためのupgradeで、非互換な変更が入ってきたりする プロダクト間の互換性
  • 37. © 2021 NTT DATA Corporation 37 Javaではpublicなクラス/メソッドが外部から呼べるAPI 削除したりシグネチャ/仕様を変えると非互換な変更 呼び出している側が動かなくなったりビルドが通らなくなったりする モジュール間で参照するためだけにpublicなクラス/メソッドも多い (Hadoopは)それを示すためのInterfaceAudienceアノテーションを使っている @InterfaceAudience.PublicなものだけJavadocが出力される @InterfaceAudience.Privateだとマイナーバージョンアップでも変更されうる JavaのAPI @InterfaceAudience.LimitedPrivate({ "MapReduce", "HBase" }) @InterfaceStability.Unstable public class DistributedFileSystem extends FileSystem implements KeyProviderTokenIssuer, BatchListingOperations { APIが外部向けかどうかを示すアノテーションの例:
  • 38. © 2021 NTT DATA Corporation 38 Hadoopエコシステムのプロダクト(の多く)はMavenを利用 多くのプロダクトに依存し多くのプロダクトから依存される ミドルウェア間で競合しがちなdependencies SLF4J, Log4j commons-logging, commons-cli, commons-httpclient Jackson Guava Netty, Jetty, Jersey protobuf-java ZooKeeper, Curator ... Mavenのdependency
  • 39. © 2021 NTT DATA Corporation 39 Javaで実装された(主に運用用の)APIを呼び出すモジュールを実行するシェルスクリプト dependentがAPIではなくCLIを実行し、出力をparseすることもある 出力のフォーマットの変更や、warning出力の追加が問題になりがち (HADOOP-11257) bash-3.0以上が前提 (HADOOP-9902) CLI
  • 40. © 2021 NTT DATA Corporation 40 Hadoopプロジェクト配布版binary tarballにもlibhadoop.soは入っている Linuxなら動くというわけでもない # ASFの正式なリリースはあくまでsource tarball # binary tarballはある環境でビルドしたものをおまけ的に提供 # Hadoop 3.2.2の場合Ubuntu 16.04でビルドしたもの nativeライブラリのポータビリティ $ hadoop checknative Native library checking: hadoop: false zlib: false ... $ ldd libhadoop.so ./libhadoop.so: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libhadoop.so) linux-vdso.so.1 => (0x00007ffc0959f000) ... nativeライブラリが使えない状態:
  • 41. © 2021 NTT DATA Corporation 41 Bigtopの基本素材
  • 42. © 2021 NTT DATA Corporation 42 ソースコードはGitHubにある ASF(Apache Software Foundation)のプロジェクト全般 # 2019年4月から # https://blogs.apache.org/foundation/entry/the-apache-software-foundation-expands 開発の管理はJIRA https://issues.apache.org/jira/projects/BIGTOP issueを作ってパッチを添付するかpull requestのリンクを貼る Bigtopのソースコード $ git clone https://github.com/apache/bigtop $ cd bigtop Bigtopのソースコードの取得:
  • 43. © 2021 NTT DATA Corporation 43 Gradleを利用して各種処理を実行する Bigtopのタスク $ ./gradlew tasks > Task :tasks ------------------------------------------------------------ Tasks runnable from root project - Bigtop ------------------------------------------------------------ Apache Creadur tasks -------------------- rat - Runs Apache Rat checks Build tasks ----------- assemble - Assembles the outputs of this project. ... タスク一覧の表示:
  • 44. © 2021 NTT DATA Corporation 44 部品表: 対象プロダクトとそのバージョンなどが記述されている GroovyのConfigSlurperの書式 Bigtop BOM $ cat bigtop.bom bigtop { // *the name should be change: the parsing code depends on it* version = "STACK-VERSION" // *required* stack { // *required* Fundamental properties of the Stack: JDK, SDK, GDK, etc 'jdk' { version = '1.8'; version_base = version } 'scala' { version = '2.10.4'; version_base = version } } ... components { 'hadoop' { name = 'hadoop' relNotes = 'Apache Hadoop' version { base = '3.2.2'; pkg = base; release = 1 } tarball { destination = "${name}-${version.base}.tar.gz" source = "${name}-${version.base}-src.tar.gz" } url { download_path = "/$name/common/$name-${version.base}" site = "${apache.APACHE_MIRROR}/${download_path}" archive = "${apache.APACHE_ARCHIVE}/${download_path}" } }
  • 45. © 2021 NTT DATA Corporation 45 Bigtop toolchain
  • 46. © 2021 NTT DATA Corporation 46 プロダクト群をビルドするための環境をセットアップする資材 Puppetをインストールするスクリプト ビルドツール群をインストールPuppetマニフェスト JDK, Maven, GCC, CMake, Protocol Buffers, lib*-devel, ... OS提供パッケージだとバージョンが合わないものは個別にセットアップ プラットフォーム差分に対応するためのワークアラウンドを入れることもある 例) aarch64対応のパッチを当ててprotobuf-2.5.0をビルド bigtop_toolchain $ sudo bigtop_toolchain/bin/puppetize.sh $ ./gradlew toolchain bigtop_toolchainによるビルド環境のセットアップ:
  • 47. © 2021 NTT DATA Corporation 47 最近のHadoopやHBaseはprotobuf-maven-pluginを利用 ビルド過程で.protoから.javaのソースを生成するため protocのバイナリが自動的にダウンロードされる バイナリが未提供のプラットフォーム/バージョンでの対応が必要 com.google.protobuf:protoc < 3.5.0 ではaarch64用バイナリが未提供 com.google.protobuf:protoc < 3.7.0 ではppcle64バイナリが未提供 protobuf-maven-plugin if [ $HOSTTYPE = "powerpc64le" ] ; then mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 -Dclassifier=linux-ppcle_64 -Dpackaging=exe -Dfile=/usr/local/bin/protoc mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.5.1-1 -Dclassifier=linux-ppcle_64 -Dpackaging=exe -Dfile=/usr/local/protobuf-3.5.1.1/bin/protoc fi if [ $HOSTTYPE = "aarch64" ] ; then mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=2.5.0 -Dclassifier=linux-aarch_64 -Dpackaging=exe -Dfile=/usr/local/bin/protoc fi do-component-build内でローカルビルドしたprotocからアーティファクトをインストール:
  • 48. © 2021 NTT DATA Corporation 48 Bigtop packaging
  • 49. © 2021 NTT DATA Corporation 49 プロダクトをビルドしてパッケージングする 「プロダクト名-pkg」というGradleタスクで実行 .rpmと.debの2種類に対応 その環境に応じたパッケージが作られる Red Hat系なら.rpm Debian系なら.deb bigtop-package $ ./gradlew hadoop-pkg $ ./gradlew zookeeper-pkg $ ./gradlew bigtop-jsvc-pkg bigtop-utils-pkg bigtop-groovy-pkg パッケージングタスクの実行例:
  • 50. © 2021 NTT DATA Corporation 50 共通のビルド手順とインストール手順を.debと.rpm用の資材から呼び出して使う ビルド手順: do-component-build インストール手順: install_プロダクト名.sh パッケージング資材 bigtop-packages ├── src │ ├── common │ │ ├── hadoop │ │ │ ├── do-component-build │ │ │ ├── install_hadoop.sh │ │ │ ├── deb │ │ ├── hadoop │ │ │ ├── control │ │ │ ├── rules │ │ │ ├── rpm │ │ ├── hadoop │ │ │ ├── SPECS │ │ │ │ ├── hadoop.spec パッケージング資材の配置:
  • 51. © 2021 NTT DATA Corporation 51 パッケージング時にpatch.*diffという名前のファイルをpatchとして適用 リリース版で解決できない問題に対応するため 特定プラットフォームでビルドが失敗する問題への対処 # Ubuntu, x86_64を暗黙に想定しているパターンが多いような パッケージング対象バージョンに含まれない修正のバックポート 互換性を壊す変更のrevert プロダクト間のdependencyのつじつま合わせ プロダクトA, B, Cの3つが同時に動くバージョンの組み合わせが存在しないなど 独自に修正するとしてもpom.xmlぐらい patchを書いたらなるべくfeedback.. Bigtopパッケージングにおけるパッチ適用 $ find bigtop-packages/src/common/hadoop -name 'patch*.diff' | sort bigtop-packages/src/common/hadoop/patch0-revert-HADOOP-16598.diff bigtop-packages/src/common/hadoop/patch1-HADOOP-15939.diff bigtop-packages/src/common/hadoop/patch2-exclude-spotbugs-annotations.diff bigtop-packages/src/common/hadoop/patch3-fix-broken-dir-detection.diff Bigtopが適用するpatch:
  • 52. © 2021 NTT DATA Corporation 52 $BIGTOP_HOME/output 下に出力されるパッケージファイルでリポジトリを作成する repoタスクで実行 その環境に応じたリポジトリが作られる (Red Hat系ならYumの、Debian系ならAptの) パッケージリポジトリの作成 $ ./gradlew repo $ tree output ... ├── hadoop │ ├── hadoop-3.2.2-1.el8.src.rpm │ └── x86_64 │ ├── hadoop-3.2.2-1.el8.x86_64.rpm │ ├── hadoop-client-3.2.2-1.el8.x86_64.rpm │ ├── hadoop-conf-pseudo-3.2.2-1.el8.x86_64.rpm ... │ ├── hadoop-hdfs-3.2.2-1.el8.x86_64.rpm ... ├── repodata ... │ ├── aa0ff69b812187315d6825fcf7d862c326ac1ba42bf9625e57b826cd6462a68c-filelists.xml.gz │ ├── cb8d35ada5c22a89e1f65a62229acde45b4175d5281a513fc6e1190d0ce4544c-filelists.sqlite.bz2 │ ├── f2077b7afd203a11428c21ca3c41f02a786fc2f514888274f12f514673d4f88f-primary.xml.gz │ └── repomd.xml リポジトリの作成(CentOS 8で実行した場合の例):
  • 53. © 2021 NTT DATA Corporation 53 「プロダクト名-pkg-ind」というGradleタスクで実行(in Docker container) 異なるOS用のパッケージをビルドできる Docker Hubのbigtop/slavesのイメージを利用 -POS=centos-7 -Pprefix=trunkだとtrunk-centos-7タグになる(x86_64の場合) CPUアーキテクチャはビルド環境に応じて決まる aarch64のマシン上でやるとtrunk-centos-7-aarch64タグ repo-indタスクは、repoタスクをDockerコンテナで実行 Docker provisioner(後述)と組み合わせてテストに利用 Dockerコンテナを利用したパッケージング $ ./gradlew hadoop-pkg-ind -POS=centos-7 -Pprefix=trunk $ ./gradlew repo-ind -POS=centos-7 -Pprefix=trunk パッケージングタスクの実行例:
  • 54. © 2021 NTT DATA Corporation 54 Bigtop provisioning
  • 55. © 2021 NTT DATA Corporation 55 Dockerコンテナを起動してPuppetでクラスタを構築するスクリプト 事前にDockerとdocker-composeのセットアップが必要 ./gradlew docker-provisionerで実行できる(がスクリプトを直接使った方が微妙に便利..) Docker provisioner $ cd provisioner/docker $ ./docker-hadoop.sh --create 3 --image bigtop/puppet:trunk-centos-8 --memory 8g --stack hdfs,yarn,mapreduce --repo file:///bigtop-home/output --disable-gpg-check $ ./docker-hadoop.sh --list Name Command State Ports ------------------------------------------------------------ 20210124_122554_r12819_bigtop_1 /sbin/init Up 20210124_122554_r12819_bigtop_2 /sbin/init Up 20210124_122554_r12819_bigtop_3 /sbin/init Up $ ./docker-hadoop.sh --exec 1 /bin/bash ... Dockerコンテナを利用したデプロイの例:
  • 56. © 2021 NTT DATA Corporation 56 docker-hadoop.sh --createで出力されたファイルを見ると参考になる Bigtopのソースツリーを/bigtop-homeにマウント Hieraの設定を生成してpuppet apply Docker provisionerの仕組み $ cat docker-compose.yml bigtop: ... volumes: - ../../:/bigtop-home - ./config/hiera.yaml:/etc/puppet/hiera.yaml - ./config/hieradata:/etc/puppet/hieradata - ./config/hosts:/etc/hosts - /sys/fs/cgroup:/sys/fs/cgroup:ro $ cat config/hieradata/site.yaml bigtop::hadoop_head_node: b2d614be6039.bigtop.apache.org hadoop::hadoop_storage_dirs: [/data/1, /data/2] bigtop::bigtop_repo_uri: file:///bigtop-home/output bigtop::bigtop_repo_gpg_check: false hadoop_cluster_node::cluster_components: [hdfs,yarn,mapreduce] hadoop_cluster_node::cluster_nodes: [172.17.0.3, 172.17.0.4, 172.17.0.2] ... Docker provisionerの設定ファイル(の一部):
  • 57. © 2021 NTT DATA Corporation 57 Hadoopクラスタを構築するためのPuppetマニフェスト Docker provisioner抜きで使うこともできる bigtop-deploy $ tree bigtop-deploy/puppet bigtop-deploy/puppet ├── hieradata │ ├── bigtop │ │ ├── cluster.yaml ... │ └── site.yaml ├── hiera.yaml ├── manifests │ ├── bigtop_repo.pp │ ├── cluster.pp ... │ ├── hadoop ... │ │ ├── manifests │ │ │ └── init.pp │ │ └── templates │ │ ├── container-executor.cfg │ │ ├── core-site.xml ... Puppetマニフェストのファイルツリー:
  • 58. © 2021 NTT DATA Corporation 58 スクリプト経由でコンテナ停止と、一時ファイル等の削除 クラスタ起動中の問題などでやり直す場合も、まず一度--destroyしてから Dockerクラスタの終了 $ ./docker-hadoop.sh --destroy Dockerコンテナクラスタの停止:
  • 59. © 2021 NTT DATA Corporation 59 Bigtop tests
  • 60. © 2021 NTT DATA Corporation 60 パッケージをデプロイした状態で動くかざっくり確認するためのテスト おもにGroovyで書かれている CLIを実行して期待する出力が得られるかを確認というパターンが多い smoke-tests $ cat bigtop-tests/test-artifacts/hadoop/src/main/groovy/.../hdfs/TestTextSnappy.groovy ... @Test void testTextSnappy() { String cmd = "hadoop fs -text ${testDir}/${snappyFileName}" System.out.println(cmd) sh.exec(cmd) String output = sh.getOut().join("n") logError(sh) String expected = "1traffertyt31n2tjonest33n3tsteinbergt33" System.out.println("Expected output:n${expected}") System.out.println("Actual output:n${output}") assertEquals("Incorrect output", expected, output) } smoke-testsのテストケースの例:
  • 61. © 2021 NTT DATA Corporation 61 Docker provisionerで起動したクラスタ上でテストを実行できる やっていることはgradleタスクの実行 --smoke-test hdfs だと bigtop-tests:smoke-tests:hdfs:test タスク Docker provisionerでtestを実行 $ ./docker-hadoop.sh --smoke-tests hdfs,yarn,mapreduce 起動済みのDockerコンテナを利用してsmoke testsを実行:
  • 62. © 2021 NTT DATA Corporation 62 Summary
  • 63. © 2021 NTT DATA Corporation 63 BigtopはHadoopエコシステムのプロダクトの「機能する組み合わせ」を提供 Bigtop 3.0はHadoop 3系とSpark 3系をパッケージする最初のリリース Bigtop 3.1以降でHadoop 3.3以降への対応を予定 まとめ
  • 64. © 2021 NTT DATA Corporation 本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。