LoginSignup
8
5

More than 5 years have passed since last update.

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だった。

bigtop_toolchain/manifests/gradle.pp
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

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5