こんにちは。kimukimuです。
#今回はDempsyではなく、Stormです^^;
最近思うこととして、
『クラスタを簡単に構築できなければ分散システムは使えない』というのがあります。
・・・ええ、Stormの環境構築って地味に手間がかかるものでして(汗
そんなわけで、Stormを簡単にインストールするために、
インストーラ(もどき?)を作れるか試してみます。
一部であっても手間が減るのは確かですしね。
尚、以後の記述では基本的に下記の性能を持つ物理サーバマシンを使用しています。
1.インストーラ構築に必要な要素は?
以前の環境構築の時の投稿を振り返ってみますと、Storm構築に必要な要素は下記です。
その上で、下記の3つについては事前にインストールしておいてください。
でほぼ済むものなので省略します。
・・・そもそも、最近のOSだと最初から入っているケースが多いというのもありますが^^;
そのためインストーラとして必要となるものは最低下記の3つです。
- Zookeeper
- ZeroMQ 2.1.7
- JZMQ
そのうち、ZookeeperについてはStorm開発者のnathanmarzさんがStormのML上で
「Single Zookeeper Nodeで10台〜20台のStormクラスタマシンが賄える」という意見を述べていますので、
クラスタマシンを量産するという観点においては
最悪Zookeeperは落としていいのかもしれません。
#Google Group「Storm」の2012/04/19に開始している「Performance」というスレッドにて
そのため、まずはZeroMQとjzmqをRPMパッケージ化して
ローカルでビルドすることなくインストールすることを目指します。
2.rpm作成のための環境構築
ZeroMQ 2.1.7と、JZMQのソースtarballを確認したところ、
幸い、下記の通りspecファイルは存在する構成になっていました。
■ZeroMQ 2.1.7
[root@hyperion zeromq-2.1.7]# ls AUTHORS MAINTAINERS acinclude.m4 configure perf COPYING Makefile.am aclocal.m4 configure.in src COPYING.LESSER Makefile.in autogen.sh doc tests ChangeLog NEWS builds foreign version.sh INSTALL README config include zeromq.spec
■jzmq
[root@hyperion jzmq]# ls AUTHORS ChangeLog README builds jzmq.spec src COPYING Makefile.am README-PERF configure.in perf test COPYING.LESSER NEWS autogen.sh debian pom.xml
そのため、rpmbuildコマンドでrpmファイルは作成可能・・・ということになります。
なので、まずはrpmbuild用の環境を整えます。
■ビルド環境構築
// rpm-buildコマンドインストール # yum install rpm-build // 開発ツール/ビルドツール関連インストール # yum groupinstall "Development Tools" # yum install glib2-devel // rpmbuild用のユーザを作成 # useradd rpmbuilder // rpmbuild用ユーザのパスワードを設定し、rpmbuilderユーザに変更 # passwd rpmbuilder # su - rpmbuilder // rpmbuild用のディレクトリを作成 > mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} // rpmbuild用の環境変数を設定(下記参照) > vi ~/.rpmmacros // JAVA_HOMEを環境変数に追加 echo "export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk.x86_64" >> ~/.bashrc
■.rpmmacros
%_topdir %(echo $HOME)/rpmbuild %debug_package %{nil} %_smp_mflags -j3
・・・と、とりあえずこれで環境構築は終了です。
では実際のrpmパッケージの生成に入りましょう。
3.rpmパッケージ生成
まずはZeroMQのパッケージ生成からです。
あ、もちろん環境変数反映のためにrpmbuilderユーザにはログインしなおしておいてくださいね。
■ZeroMQパッケージ生成
// ディレクトリ移動 > cd /home/rpmbuilder/rpmbuild/SOURCES // tarballダウンロード > wget http://download.zeromq.org/zeromq-2.1.7.tar.gz // rpmパッケージ生成 // ※結構時間かかります。 > rpmbuild -ta zeromq-2.1.7.tar.gz → /home/rpmbuilder/rpmbuild/RPMS/x86_64 配下に下記の2ファイルが生成 −zeromq-2.1.7-1.el6.x86_64.rpm −zeromq-devel-2.1.7-1.el6.x86_64.rpm
という形で比較的すんなり生成できました。
同じように、jqmq側の生成も行います。
尚、autogen.shとconfigureを実行しておかないとこちらはjzmq側は生成出来ないようです。
■jzmq
// ディレクトリ移動 > cd /home/rpmbuilder/rpmbuild/SOURCES // ソースコードダウンロード > git clone https://github.com/nathanmarz/jzmq.git // ディレクトリ名称変更 > mv jzmq jzmq-2.1.0 // 事前ファイル生成 > cd jzmq-2.1.0 > ./autogen.sh > ./configure > make // tarball生成 > cd ../ > tar cvpf jzmq-2.1.0.tar.gz jzmq-2.1.0 > rm -rf jzmq-2.1.0 // rpmパッケージ生成 // ※結構時間かかります。 > rpmbuild -ta jzmq-2.1.0.tar.gz → /home/rpmbuilder/rpmbuild/RPMS/x86_64 配下に下記の2ファイルが生成 −jzmq-2.1.0-1.el6.x86_64.rpm −jzmq-devel-2.1.0-1.el6.x86_64.rpm
という形で、こちらも生成できました。
最終的にまっさらな環境で確認する必要はありますが、
とりあえず下記の場所にアップしてあります。
jzmq-2.1.0-1.el6.x86_64.rpm
jzmq-devel-2.1.0-1.el6.x86_64.rpm
zeromq-2.1.7-1.el6.x86_64.rpm
zeromq-devel-2.1.7-1.el6.x86_64.rpm
4.後必要なものは?
後必要なものとしては、
yum等のパッケージ管理で検知できるようにするための情報と、
後はZooKeeperのrpm・・となりますね。
ともあれ、続きは次回に。