Raspberry Pi 2でApache Storm環境構築
前に一度やった、Raspberry Piを使った、並列分散処理基盤の評価環境作成の続きです。
Raspberry Pi 2 2台を使ってのApache Sparkの環境構築&並列分散処理のテストは一応できたので、次は同じくRaspberry Pi 2 2台で、Apache Stormの環境構築をしてみたいと思います。
Apache Stormで出てくる用語については、こちらでわかりやすくまとめてくださっています。
ではでは、とりあえずやってみましょう。
まず、個人的に先に作ったSpark環境とごっちゃにしたくないので、2代のRaspberry Piに新しくstormユーザを作って、sudoを利用可能にしておきます。
$ sudo adduser storm $ sudo usermod -G sudo storm
以下、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が最新でした。
$ 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
とりあえずstandaloneモードで動作させるため、設定ファイル”conf/zoo.cfg”を作成します。
$ cd /home/storm/zookeeper-3.4.6/ $ cd conf $ cp zoo_sample.cfg zoo.cfg
とりあえずはそのままでOKだと思いますが、上記設定ファイルのdataDirとして設定されている”/tmp/zookeeper”フォルダを作成しておきます。
$ mkdir /tmp/zookeeper
これでとりあえず実行してみます。
$ bin/zkServer.sh start JMX enabled by default Using config: /home/storm/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
動きました。。。が、これでいいんだろうか?まあ、ダメだったら後で戻ってくることにします。
続いて、Nimbus&Zookeeper用と、Supervisor用のRaspberry PiにApache Storm本体をダウンロード&解凍します。この記事の執筆時点(2015/5/6)時点では、0.9.4が最新でした。
$ 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
こちらも設定ファイルを用意してやる必要があります。とりあえずNimbus&Zookeepr用のRaspberry Piの方から設定していきます。
$ cd /home/storm/apache-storm-0.9.4/conf $ cp storm.yaml storm.yaml.org
バックアップをとっておいて、storm.yamlを設定していきます。特に設定しない場合はdefaults.yamlの値が使用されるので、Nimbus&Zookeepr用のstorm.yamlは適当な箇所に一個だけ追記します。
storm.local.dir: "/tmp/storm"
これに合わせて、上記のディレクトリを作成しておきます。
$ mkdir /tmp/storm
次はSupervisor用のRaspberry Piの方のstorm.yamlを設定してします。こちらはちょっと設定箇所が増えます。
storm.zookeeper.servers: - "192.168.24.51" storm.local.dir: "/tmp/storm" nimbus.host: "192.168.24.51"
Nimubus&Zookeeper用のRaspberry PiのIPアドレスを設定しています。こちらも同じく、storm.local.dirで指定したディレクトリを作成しておきます。
$ mkdir /tmp/storm
以上で設定は完了です。では、Stormクラスタを立ち上げてみます。
Nimubus&Zookeeper用のRaspberry Piで、Zookeeperをまだ立ち上げていない場合は、先にZookeeperを立ち上げます。いちいちZookeeperとStormのディレクトリを移動するのが面倒であれば、両者のbinにパスを通しておいた方がいいかもしれませんが、ここではそれぞれの解凍ディレクトリに移動して実行しています。
$ bin/zkServer.sh start
起動を確認したら、Stormのディレクトリに移動して、
$ bin/storm nimbus &
次に、Supervisor用のRaspberry Piの方で、
$ bin/storm supervisor &
最後に、もう一度Nimubus&Zookeeper用のRaspberry Piの方で、
$ bin/storm ui &
これで、ブラウザから”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は
$ bin/zkServer.sh stop
で終了できますが、それ以外はとりあえず”ps aux”でプロセスIDを調べて手動でkillします。
以上、とりあえずRaspberry Pi 2 を2台使ったStorm環境構築はできたようです。次はサンプルプログラムで動作確認をしたいと思います。
ディスカッション
コメント一覧
まだ、コメントがありません