※こちらを参照した。
9 Apache Stormを動かすに従って、単体動作まで完了させる。
10 ZooKeeprをDistributed Modeで動かす。
- ZooKeeper.mdの第2章のみを実行して、ZooKeeperをDistributed Modeで実行する。
11 Stormクラスタの設定を行う。(root権限で実行)
- stormの設定は、storm.yaml というファイルを作りますが、 stormのサーバの設定用のstorm.yaml と、クライアントの設定用のstorm.yamlがあるので注意が必要です。 サーバ用とは、stormを動かすための設定で、nimbusとsupervisorで通信したり、zookeeperとやりとりをするための設定です。 クライアント用とは、stormにtopologyを投入する時に、workerはいくつにする、などの設定です。
サーバーとなるvm1上で実行すること。
11.1 サーバー用設定を編集する。
-
まず、server設定用を編集します。 server用の設定は、Stormをインストールしたディレクトリを$STORMHOMEとしたとき、$STORMHOME/conf にあります。
-
※今回はvm1.soushi.jp〜vm5.soushi.jpまで5台あるとする。
-
※ワーカーが使うポート番号は6700〜6703の4ワーカー分。
storm.zookeeper.servers
su
cp /usr/local/storm/conf/storm.yaml /usr/local/storm/conf/storm.yaml.bak
echo "# This is a list of the hosts in the Zookeeper cluster for your Storm cluster." >> /usr/local/storm/conf/storm.yaml
echo "storm.zookeeper.servers:" >> /usr/local/storm/conf/storm.yaml
echo "- '192.168.66.201'" >> /usr/local/storm/conf/storm.yaml
echo "- '192.168.66.202'" >> /usr/local/storm/conf/storm.yaml
echo "- '192.168.66.203'" >> /usr/local/storm/conf/storm.yaml
echo "- '192.168.66.204'" >> /usr/local/storm/conf/storm.yaml
echo "- '192.168.66.205'" >> /usr/local/storm/conf/storm.yaml
storm.local.dir
echo "" >> /usr/local/storm/conf/storm.yaml
echo "# The Nimbus and Supervisor daemons require a directory on the local disk" >> /usr/local/storm/conf/storm.yaml
echo "# to store small amounts of state (like jars, confs, and things like that)." >> /usr/local/storm/conf/storm.yaml
echo "# You should create that directory on each machine, give it proper permissions, " >> /usr/local/storm/conf/storm.yaml
echo "# and then fill in the directory location using this config." >> /usr/local/storm/conf/storm.yaml
echo "storm.local.dir: '/tmp/storm'" >> /usr/local/storm/conf/storm.yaml
nimbus.host
echo "" >> /usr/local/storm/conf/storm.yaml
echo "# The worker nodes need to know which machine is the master in order to download " >> /usr/local/storm/conf/storm.yaml
echo "# topology jars and confs." >> /usr/local/storm/conf/storm.yaml
echo "nimbus.host: '192.168.66.201'" >> /usr/local/storm/conf/storm.yaml
supervisor.slots.ports:
echo "" >> /usr/local/storm/conf/storm.yaml
echo "# For each worker machine, you configure how many workers run on that machine" >> /usr/local/storm/conf/storm.yaml
echo "# with this config. Each worker uses a single port for receiving messages, " >> /usr/local/storm/conf/storm.yaml
echo "# and this setting defines which ports are open for use. If you define five ports here," >> /usr/local/storm/conf/storm.yaml
echo "# then Storm will allocate up to five workers to run on this machine. If you define" >> /usr/local/storm/conf/storm.yaml
echo "# three ports, Storm will only run up to three. By default, this setting is configured" >> /usr/local/storm/conf/storm.yaml
echo "# to run 4 workers on the ports 6700, 6701, 6702, and 6703. " >> /usr/local/storm/conf/storm.yaml
echo "supervisor.slots.ports:" >> /usr/local/storm/conf/storm.yaml
echo "- 6700" >> /usr/local/storm/conf/storm.yaml
echo "- 6701" >> /usr/local/storm/conf/storm.yaml
echo "- 6702" >> /usr/local/storm/conf/storm.yaml
echo "- 6703" >> /usr/local/storm/conf/storm.yaml
echo "- 6704" >> /usr/local/storm/conf/storm.yaml
echo "- 6705" >> /usr/local/storm/conf/storm.yaml
echo "- 6706" >> /usr/local/storm/conf/storm.yaml
echo "- 6707" >> /usr/local/storm/conf/storm.yaml
echo "- 6708" >> /usr/local/storm/conf/storm.yaml
echo "- 6709" >> /usr/local/storm/conf/storm.yaml
- ※他にも設定できるパラメータはいくつかあります。デフォルトではdefaults.yamlの値が使われます。
11.2 storm.local.dirを作成する。
- 第11.1章で設定したstorm.local.dirを、実際に作成します。
mkdir /tmp/storm
クライアントとなるvm2〜vm5上で実行すること。
11.3 Stormのクライアントの設定
- stormのクライアント、stormクラスタに対してtopologyをsubmitする役割を持ちます。 そのため、その設定にはnimbusのIP addressが必要です。
- stormのクライアントの設定は、 ~/.storm/storm.yaml に記述します。
su
mkdir ~/.storm/
echo "nimbus.host: 'vm1.soushi.jp'" >> ~/.storm/storm.yaml
ローカル端末(Mac)で実行すること。
12 サンプルプログラムを実行する。
12.1 サンプルプログラムのダウンロード
mkdir ~/storm-project
cd ~/storm-project/
git clone git://github.com/nathanmarz/storm-starter
12.2 ログ出力のためのディレクトリを作成する。
cd ~/storm-project/storm-starter/
mkdir log
12.3 Mavenでサンプルコードをコンパイルする。
pom.xmlが無いというエラーがでるので、m2-pom.xmlをpom.xmlにリネームします。
cd ~/storm-project/storm-starter/
mv m2-pom.xml pom.xml
mvn compile exec:java -Dstorm.topology=storm.starter.WordCountTopology
mvn package
謎のエラーが発生したら、Mavenのローカルフォルダを削除すると解決する可能性あり
rm -rf ~/.m2/
12.4 実行
12.4.1 ZooKeeperを起動する。
zkServer.sh start &
12.4.2 Stormを起動する。
storm logviewer &
storm ui &
storm nimbus &
storm supervisor &
- Stormの動作状況はlocalhost:8080で確認できる。
- ※今回は192.168.66.201上で動いているので、http://192.168.66.201:8080/にアクセスする。
12.4.3 サンプルプログラムを実行する。
-
~/storm-project/storm-starter/target/フォルダ配下に、storm-starter-..*-SNAPSHOT-jar-with-dependencies.jarが作成されているので、それを実行する。
-
※Exclamation Topologyを実行する場合
cd ~/storm-project/storm-starter/target/
storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.ExclamationTopology test
- ※RollingTopWordsを実行する場合
cd ~/storm-project/storm-starter/target/
storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.RollingTopWords