Apache Bigtopとは、Apache Hadoop関連のプロダクト(Hadoop エコシステム)のパッケージング、テストなどを担当するツールですが、実際にどのようにして使えばいいのかについてはあまり深く知られていないと思います。本記事では、少しだけですがApache Bigtopの使い方について紹介します。
目標
- 最新版のHadoopのRPMファイルを作ること
- 自分でパッチを当てたHadoopのRPMファイルを作ること
本記事では、いずれも達成できていません。
前提
- Bigtopのバージョンは、master (2015/11/21時点)
- CentOS 6系ベース (Azureを使っている都合で、実際はOpenLogic 6.7)
必要なライブラリ
Hadoopをコンパイルするのに必要なもの(詳細はHadoop Wiki: HowToContributeを参照)に加えて、以下が必要
- Gradle
- rpmbuild
rpmbuildはyumで入る。Gradleは公式サイトからDLする必要がある。Gradleのバージョンは、指定のものを使う。bigtop_toolchainという、ビルド環境構築用Puppetマニフェスト群があり、そのマニフェストを読めば対応しているGradleのバージョンがわかる。本記事の執筆時点では、2.7だった。
class bigtop_toolchain::gradle {
include bigtop_toolchain::deps
exec {"/usr/bin/wget http://services.gradle.org/distributions/gradle-2.7-bin.zip":
cwd => "/usr/src",
require => Package[$packages::pkgs],
unless => "/usr/bin/test -f /usr/src/gradle-2.7-bin.zip",
}
(以下略)
最新だと必ずしも良いというわけではなく、例えば、Bigtop 1.0.0 + Gradle 2.9では動かなかった。
ちなみに、Puppetをインストールすれば、bigtop_toolchainによってビルド用環境を自動構築できる。自分はPuppetを手で入れるのが面倒なので手作業でいろいろとインストールしたが、Puppetを入れる部分もスクリプト化されていたので、最初から下の記事に書いてある手順でやったほうが良いと思う。
ビルド
$ gradle hadoop-rpm
上記のコマンドを実行するだけでHadoop 2.7.1のRPM群が完成する。outputディレクトリ配下にRPMファイルが入っている。
[azureuser@centos67a x86_64]$ ls output/hadoop/x86_64
hadoop-2.7.1-1.el6.x86_64.rpm
hadoop-client-2.7.1-1.el6.x86_64.rpm
hadoop-conf-pseudo-2.7.1-1.el6.x86_64.rpm
hadoop-debuginfo-2.7.1-1.el6.x86_64.rpm
hadoop-doc-2.7.1-1.el6.x86_64.rpm
hadoop-hdfs-2.7.1-1.el6.x86_64.rpm
hadoop-hdfs-datanode-2.7.1-1.el6.x86_64.rpm
hadoop-hdfs-fuse-2.7.1-1.el6.x86_64.rpm
hadoop-hdfs-journalnode-2.7.1-1.el6.x86_64.rpm
hadoop-hdfs-namenode-2.7.1-1.el6.x86_64.rpm
hadoop-hdfs-secondarynamenode-2.7.1-1.el6.x86_64.rpm
hadoop-hdfs-zkfc-2.7.1-1.el6.x86_64.rpm
hadoop-httpfs-2.7.1-1.el6.x86_64.rpm
hadoop-libhdfs-2.7.1-1.el6.x86_64.rpm
hadoop-libhdfs-devel-2.7.1-1.el6.x86_64.rpm
hadoop-mapreduce-2.7.1-1.el6.x86_64.rpm
hadoop-mapreduce-historyserver-2.7.1-1.el6.x86_64.rpm
hadoop-yarn-2.7.1-1.el6.x86_64.rpm
hadoop-yarn-nodemanager-2.7.1-1.el6.x86_64.rpm
hadoop-yarn-proxyserver-2.7.1-1.el6.x86_64.rpm
hadoop-yarn-resourcemanager-2.7.1-1.el6.x86_64.rpm
hadoop-yarn-timelineserver-2.7.1-1.el6.x86_64.rpm
実際にこれらをインストールしようとすると、ZooKeeperも必要になります。ZooKeeperもBigtopでビルドできます。
$ gradle zookeeper-rpm
自分でパッチを当てたHadoopのビルド
パッチを、bigtop-packages/src/common/<your-package>
に置く。 パッチの名前は、patch*.diff
にする必要がある。自分はまだ試してないです。
おわりに
体調を崩してしまってAdventCalendar書くのが遅くなってすみません。しかも、書いている途中のネタですみません。また続きを書く機会がありそうなので、がんばります。
続きを書きました。 Bigtopと戯れる その2
参考にしたドキュメント
公式のwiki: https://cwiki.apache.org/confluence/display/BIGTOP/Index