stormについては

を参照してください。

今回は

の続き。

localmodeで実行ということは、stormのnimbusやsupervisorといった分散のための仕組みを利用せずに、とりあえずstormのプログラムを動かしてみる、というものです。

storm-starterのダウンロード

サンプルコードをダウンロードします。 nathanmarz/storm-starter - GitHub

$ git clone git://github.com/nathanmarz/storm-starter.git

eclipseに読み込む

前回作成途中だったJava projectにサンプルのプログラムをimportします。 projectの src に import > general > FileSystem で先ほどダウンロードした storm-starterのしたの storm-starter/src/jvm/storm を"From Directory"に指定して、"Create Top-level folder"にチェックを入れます。 次に、project のトップに storm-starter/multilang/resoucesをimportします。 こんな感じになるはず。 Storm starter ここでエラーが出ている場合、stormが最新版じゃない可能性があります。

JARをexport

そして、このprojectをJARファイルに固めます。 Export > Java > JAR fileから、StormStarterプロジェクトを.classpathや.projectを除いてJARにします。 warningが出るけど気にしない。

実行

今作成したJARファイルをstormで実行します。 前回の準備で正しくpathが通っていればstormコマンドが利用できるはずです。 (うまく動かない場合はpermissionなどを確認してください)
$ storm jar StormStarter.jar storm.starter.ExclamationTopology

これで、ダーッと文字が出て、したのようにビックリマークがついた単語が出ていれば成功です。 ExclamationBoltのemitのログが表示されています。

....
11367 [Thread-25] INFO  backtype.storm.daemon.task  - Emitting: class storm.starter.ExclamationTopology$ExclamationBolt source: 2:3, stream: 1, id: {}, [golda!!!]
....

twitterのstreamを使うTopologyは例えば、

$ storm jar StormStarter.jar storm.starter.PrintSampleStream [username] [password]

のようなものがあります。

今回使ったstormコマンドは、

storm jar [jarファイル] [メインクラス] (引数…)

のようにjarを指定してTopologyの実行を行いました。

他のTopologyも同様に動くと思いますが、wordcountは環境によってはうまく動作しないかもしれません。

以上で、localmodeでstormのプログラムを動かすことが確認できました。

参考