Storm0.8.0やら、実世界での用途を確認して間が空いちゃいましたが、
Stormを簡単にインストールする方法の続きを確認してみます。
というわけで、前回作成したrpmの動作を確認します。
1.仮想マシンの設定
まっさらな環境にインストールして確認する必要があるため、仮想マシンの構築です。
まず対象とする環境はCentOS6.2の64bit。
下記のように、Basic Serverとしてマシンを構築します。
構築後、IPアドレスを割り振り、ホスト名を/etc/hostsに記述しておきましょう。
2.前提ソフトウェアのインストール(rpm他)
復習になりますが、Stormの動作に必要なソフトウェアは下記です。
上記の設定で仮想マシンを構築した場合前提条件6個のうち、初めから下記の前提条件は満たしています。
そのため、下記のソフトウェアを追加でインストールします。
- ZeroMQ 2.1.7
- JZMQ
- Zookeeper
ZeroMQ 2.1.7
前回作成したrpmファイルを使ってインストールを行います。
[root@installtest storm]# ls jzmq-2.1.0-1.el6.x86_64.rpm zeromq-2.1.7-1.el6.x86_64.rpm jzmq-devel-2.1.0-1.el6.x86_64.rpm zeromq-devel-2.1.7-1.el6.x86_64.rpm [root@installtest storm]# rpm -i zeromq-2.1.7-1.el6.x86_64.rpm エラー: 依存性の欠如: uuid は zeromq-2.1.7-1.el6.x86_64 に必要とされています // uuidが足りないため、ダウンロードしてインストール [root@installtest storm]# wget http://isoredirect.centos.org/centos/6.2/os/x86_64/Packages/uuid-1.6.1-10.el6.x86_64.rpm [root@installtest storm]# ls jzmq-2.1.0-1.el6.x86_64.rpm zeromq-2.1.7-1.el6.x86_64.rpm jzmq-devel-2.1.0-1.el6.x86_64.rpm zeromq-devel-2.1.7-1.el6.x86_64.rpm uuid-1.6.1-10.el6.x86_64.rpm // uuidをインストール [root@installtest storm]# rpm -i uuid-1.6.1-10.el6.x86_64.rpm // ZeroMQをインストール [root@installtest storm]# rpm -i zeromq-2.1.7-1.el6.x86_64.rpm [root@installtest storm]# rpm -i zeromq-devel-2.1.7-1.el6.x86_64.rpm
これでZeroMQはインストール完了です。
JZMQ
こちらもZeroMQと同じく、前回作成したrpmファイルを使用してインストールを行います。
// ZooKeeperをダウンロード [root@installtest storm]# rpm -i jzmq-2.1.0-1.el6.x86_64.rpm [root@installtest storm]# rpm -i jzmq-devel-2.1.0-1.el6.x86_64.rpm
非常にあっさりしていますが、これでJZMQはインストール完了です。
Zookeeper
ZookeeperについてはCDH4のZookeeperがそのまま使えます。
とりあえず簡単にインストールするのが目的のため、あるものは使わせていただく方向で^^;
// パッケージをダウンロード [root@installtest storm]# wget http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4/RPMS/noarch/bigtop-utils-0.4+299-1.cdh4.0.0.p0.27.el6.noarch.rpm [root@installtest storm]# wget http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4/RPMS/noarch/zookeeper-3.4.3+14-1.cdh4.0.0.p0.27.el6.noarch.rpm [root@installtest storm]# wget http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4/RPMS/noarch/zookeeper-server-3.4.3+14-1.cdh4.0.0.p0.27.el6.noarch.rpm [root@installtest storm]# ls bigtop-utils-0.4+299-1.cdh4.0.0.p0.27.el6.noarch.rpm jzmq-2.1.0-1.el6.x86_64.rpm jzmq-devel-2.1.0-1.el6.x86_64.rpm uuid-1.6.1-10.el6.x86_64.rpm zeromq-2.1.7-1.el6.x86_64.rpm zeromq-devel-2.1.7-1.el6.x86_64.rpm zookeeper-3.4.3+14-1.cdh4.0.0.p0.27.el6.noarch.rpm zookeeper-server-3.4.3+14-1.cdh4.0.0.p0.27.el6.noarch.rpm // インストール [root@installtest storm]# rpm -i bigtop-utils-0.4+299-1.cdh4.0.0.p0.27.el6.noarch.rpm [root@installtest storm]# rpm -i zookeeper-3.4.3+14-1.cdh4.0.0.p0.27.el6.noarch.rpm [root@installtest storm]# rpm -i zookeeper-server-3.4.3+14-1.cdh4.0.0.p0.27.el6.noarch.rpm
これで前提ソフトウェアのインストールは完了です。
結構コマンドが多いようにみえますが、
やっていることは「rpmファイルをダウンロードしてインストールする」というだけです。
リポジトリを立てれば、ここまでは全てyumコマンドで自動化することができるでしょう。
3.Stormのインストール
Stormのインストール自体はStorm Wikiからダウンロードして展開するのみです。
インストール先は「/opt/storm」として進めます。
// Stormをダウンロード [root@installtest storm]# wget https://github.com/downloads/nathanmarz/storm/storm-0.8.0-SNAPSHOT.zip [root@installtest storm]# unzip storm-0.8.0-SNAPSHOT.zip [root@installtest storm]# mv storm-0.8.0-SNAPSHOT /opt/storm
これで展開は完了ですので、設定ファイルの設定を行います。
対象は「bin/storm」と、「conf/storm.yaml」です。
■bin/storm
// CONF_DIRをインストール先のパスに修正。 // デフォルトではstormユーザのホームディレクトリ配下となり、 // 存在しない場合一部のコマンドが動作しないため。 CONF_DIR = "/opt/storm/conf/"
■conf/storm.yaml
nimbus.host: "【仮想マシンのIPアドレス】" storm.local.dir: "/opt/storm" storm.zookeeper.servers: - "【仮想マシンのIPアドレス】"
これでStormのインストールも完了です。
4.Stormを起動!
では、Stormを起動してみます。
// Stormデーモンプロセスを起動 [root@installtest storm]# /opt/storm/bin/storm nimbus & [root@installtest storm]# /opt/storm/bin/storm ui & [root@installtest storm]# /opt/storm/bin/storm supervisor &
では、最後にTopologyの動作確認です。
5.Topologyの起動
StormStarterのExclamationTopologyを用いて確認を行います。
ただし、Workerプロセスは4個と設定します。
理由は、Worker間の通信が発生しないとフル機能の確認ができないからです。
1Workerプロセス内で完結する場合、内部メモリでTupleのやり取りが行われる関係上、
シリアライズもZeroMQによる通信も行われないわけなんですね。
で、起動してみたところ・・・・Workerのログにこんなメッセージが。
端的に言うとZeroMQ/JZMQが存在せずに一切他Workerとの通信が出来ない状態になっています(汗
2012-07-01 20:46:07 worker [ERROR] Error on initialization of server mk-worker java.lang.UnsatisfiedLinkError: no jzmq in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681) (中略) at backtype.storm.daemon.worker.main(Unknown Source)
見事にこけてしまったようですので、とりあえず問題を次回確認してみます。
そう一筋縄ではいかないようですねぇ・・・