前に一度やった、Raspberry Piを使った、並列分散処理基盤の評価環境作成の続きです。
Raspberry Pi 2 2台を使ってのApache Sparkの環境構築&並列分散処理のテストは一応できたので、次は同じくRaspberry Pi 2 2台で、Apache Stormの環境構築をしてみたいと思います。
Apache Stormで出てくる用語については、こちらでわかりやすくまとめてくださっています。
ではでは、とりあえずやってみましょう。
まず、個人的に先に作ったSpark環境とごっちゃにしたくないので、2代のRaspberry Piに新しくstormユーザを作って、sudoを利用可能にしておきます。
[code language=”bash”]
$ sudo adduser storm
$ sudo usermod -G sudo storm
[/code]
以下、stormユーザでログインした状態で進めていきます。
Stormクラスタの構築手順については、こちらに公式ドキュメントがあります。
このページを見つけるのに結構時間がかかってしまいまいした。。。自分だけでしょうか。あと、こちらのページも参考になります。
とりあえず、公式ページには以下のように書かれています。
- Set up a Zookeeper cluster
- Install dependencies on Nimbus and worker machines
- Download and extract a Storm release to Nimbus and worker machines
- Fill in mandatory configurations into storm.yaml
- Launch daemons under supervision using “storm” script and a supervisor of your choice
まずはZookeeperクラスタとやらをセットアップしてやんなくちゃいけません。ZookeeperはStormクラスタにおけるMasterノードである”Nimbus”と、Slaveノードである”Supervisor”の間の協調を担当してくれるらしいです。今はRaspberry Piが2台しかないので、とりあえずNimbus&Zookeeper用、Supervisor用に分けてセットアップしていきます。
ということで、Nimbus&Zookiper用のRaspberry Piの方にZookeeperをダウンロードしてきます。この記事の執筆時点(2015/5/6)時点では、安定版では3.4.6が最新でした。
[code language=”bash”]
$ wget http://ftp.jaist.ac.jp/pub/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
$ tar xzvf zookeeper-3.4.6.tar.gz
[/code]
とりあえずstandaloneモードで動作させるため、設定ファイル”conf/zoo.cfg”を作成します。
[code language=”bash”]
$ cd /home/storm/zookeeper-3.4.6/
$ cd conf
$ cp zoo_sample.cfg zoo.cfg
[/code]
とりあえずはそのままでOKだと思いますが、上記設定ファイルのdataDirとして設定されている”/tmp/zookeeper”フォルダを作成しておきます。
[code language=”bash”]
$ mkdir /tmp/zookeeper
[/code]
これでとりあえず実行してみます。
[code language=”bash”]
$ bin/zkServer.sh start
JMX enabled by default
Using config: /home/storm/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper … STARTED
[/code]
動きました。。。が、これでいいんだろうか?まあ、ダメだったら後で戻ってくることにします。
続いて、Nimbus&Zookeeper用と、Supervisor用のRaspberry PiにApache Storm本体をダウンロード&解凍します。この記事の執筆時点(2015/5/6)時点では、0.9.4が最新でした。
[code language=”bash”]
$ wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/storm/apache-storm-0.9.4/apache-storm-0.9.4.tar.gz
$ tar xzvf apache-storm-0.9.4.tar.gz
[/code]
こちらも設定ファイルを用意してやる必要があります。とりあえずNimbus&Zookeepr用のRaspberry Piの方から設定していきます。
[code language=”bash”]
$ cd /home/storm/apache-storm-0.9.4/conf
$ cp storm.yaml storm.yaml.org
[/code]
バックアップをとっておいて、storm.yamlを設定していきます。特に設定しない場合はdefaults.yamlの値が使用されるので、Nimbus&Zookeepr用のstorm.yamlは適当な箇所に一個だけ追記します。
[code language=”bash”]
storm.local.dir: "/tmp/storm"
[/code]
これに合わせて、上記のディレクトリを作成しておきます。
[code language=”bash”]
$ mkdir /tmp/storm
[/code]
次はSupervisor用のRaspberry Piの方のstorm.yamlを設定してします。こちらはちょっと設定箇所が増えます。
[code language=”bash”]
storm.zookeeper.servers:
– "192.168.24.51"
storm.local.dir: "/tmp/storm"
nimbus.host: "192.168.24.51"
[/code]
Nimubus&Zookeeper用のRaspberry PiのIPアドレスを設定しています。こちらも同じく、storm.local.dirで指定したディレクトリを作成しておきます。
[code language=”bash”]
$ mkdir /tmp/storm
[/code]
以上で設定は完了です。では、Stormクラスタを立ち上げてみます。
Nimubus&Zookeeper用のRaspberry Piで、Zookeeperをまだ立ち上げていない場合は、先にZookeeperを立ち上げます。いちいちZookeeperとStormのディレクトリを移動するのが面倒であれば、両者のbinにパスを通しておいた方がいいかもしれませんが、ここではそれぞれの解凍ディレクトリに移動して実行しています。
[code language=”bash”]
$ bin/zkServer.sh start
[/code]
起動を確認したら、Stormのディレクトリに移動して、
[code language=”bash”]
$ bin/storm nimbus &
[/code]
次に、Supervisor用のRaspberry Piの方で、
[code language=”bash”]
$ bin/storm supervisor &
[/code]
最後に、もう一度Nimubus&Zookeeper用のRaspberry Piの方で、
[code language=”bash”]
$ bin/storm ui &
[/code]
これで、ブラウザから”http://(Nimubus&Zookeeper用のRaspberry PiのIPアドレス):8080″にアクセスすると、Storm UIが表示されるハズです。ただ、表示されるようになるまで、ちょっと時間がかかります。
今自分はhostnameがraspiAのRaspberry PiをNimbus&Zookeeper用、raspiBのRaspberry PiをSupervisor用に設定しているのですが、Storm UIの”Supervisor summary”から、確かにNimubus&Zookeeper用のRaspberry Piとは別のRaspberry PiがSupervisorとして機能していることが確認できます。
Stormを終了させるとき、Zookeeperは
[code language=”bash”]
$ bin/zkServer.sh stop
[/code]
で終了できますが、それ以外はとりあえず”ps aux”でプロセスIDを調べて手動でkillします。
以上、とりあえずRaspberry Pi 2 を2台使ったStorm環境構築はできたようです。次はサンプルプログラムで動作確認をしたいと思います。

コメント
コメント一覧 (1件)
[…] 普段のお仕事の中で並列分散処理基盤と関わることがあって、それで以前にRaspberry Pi上でのSpark環境構築やらStorm環境構築やらをやったことがあるのですが、並列分散処理基盤の元祖とも言えるHadoopについては、ほとんどノータッチでやってきてしまいました。 […]