MENU

Raspberry Pi 2でApache Storm環境構築

storm-ui

前に一度やった、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クラスタの構築手順については、こちらに公式ドキュメントがあります。

このページを見つけるのに結構時間がかかってしまいまいした。。。自分だけでしょうか。あと、こちらのページも参考になります。

とりあえず、公式ページには以下のように書かれています。

  1. Set up a Zookeeper cluster
  2. Install dependencies on Nimbus and worker machines
  3. Download and extract a Storm release to Nimbus and worker machines
  4. Fill in mandatory configurations into storm.yaml
  5. 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が表示されるハズです。ただ、表示されるようになるまで、ちょっと時間がかかります。

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環境構築はできたようです。次はサンプルプログラムで動作確認をしたいと思います。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

目次