読者です 読者をやめる 読者になる 読者になる

Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Storm0.8.2公開、運用や問題解析時の便利機能が追加されました!

Storm

こんにちは。kimukimuです。

先日、Stormの最新版、0.8.2の正式版リリースが公開されました。
http://storm-project.net/2013/01/11/storm082-released.html

前回のStorm0.8.1が開発を行いやすくする機能が追加されていましたが、
今回はStormUIが主に機能追加対象となり、運用や問題解析を行いやすくする機能がそろっています。

では、追加された主な機能について挙げてみますね。

1.Topologyごとにホストマシンを占有させるIsolation Schedulerの追加

Stormクラスタ上で複数のTopologyを動作させる際、
特定のTopologyに対してホストを占有させる設定が可能となりました。

これによって、商用のTopologyは常時3個のホストを占有し、
検証用のTopologyとは混ざらないようにする。。。といったことが出来ます。

実際にStormクラスタを複数用意するのは大変ですので、
クラスタ上で検証と運用をうまくバランスさせるには便利そうですね。

2.StormUIの改善

StormUIに下記のように操作ボタン、情報が追加され非常に使いやすく改善されました。
−activate、diactivate、kill、rebalanceといったTopologyへの操作ボタン追加
−Boltの現状のキャパシティ目安(イベント処理可能数)表示
−Ack待ちのTuple数を表示
−ClusterやTopologyの設定値を表示

実際まず見る情報はStormUIのため、UIから操作が可能になったというのは非常にうれしいですね!

3.StormUIがNimbusと同ホストでなくても配置でき、複数設置可能になった

StormUIがNimbusと別ホストに配置可能になりました。

Storm0.8.1まではStormUIは問答無用でlocalhostにアクセスして情報を取得していたため、
Nimbusと同じホストにしか配置できませんでした。

Storm0.8.2では別ホストに配置可能となったため、柔軟に対応できることに加え、
StormUIを複数のホストに配置することも可能になりました。
画面だけいろんなところで見たい、ということにも対応できるようになったわけですね。

4.StormUIに表示されるエラーの数を絞ることが可能になった

「7.Workerを殺さずに〜」にも関連するのですが、
StormUIはStorm動作中に発生したエラーを表示する機能を持っています。

Storm0.8.1まではエラー表示件数は発生しただけ表示されていました。
そのため、エラーが大量に発生すると画面から溢れてしまうことが多々ありました。

Storm0.8.2では画面に表示するエラーの数を時間や回数で区切ることが可能となったため、
無駄な情報を省くことが可能になりました。

5.StormにTopologyをSubmit時、バリデーションが可能になった

StormにTopologyをSubmitする際にバリデーションが可能になりました。

Storm0.8.1まではTopologyをSubmitするときには自前でバリデーション処理を作りこみ、
自前のコードの中ではじく必要がありましたが、それをStorm側が提供した枠組みの中で可能になった・・・
というわけですね。

6.Workerを殺さずにStormUIにエラーを表示するReportedFailedExceptionの追加

これは思いっきり開発より&内部の話になってしまいますが・・・
StormUIにはTopology内部で発生した例外を補足して表示する機能がありますが、
表示される例外は「Spout/Boltを停止させるレベルの例外」のみでした。

StormではSpout/Boltが停止するとそのWorkerプロセスも併せて停止するため、
StormUIに例外が表示された時点でプロセスがフェールオーバーして
クラスタ内を飛び回っている状態になります。
結果、問題を追うのが大変・・・というのが多々ありました。

ReportedFailedExceptionは「StormUIには表示されるが、Spout/Boltの動作は継続する」例外です。
そのため、実際にクラスタ上で動かす場合にエラーのレベルを定義できるようなノリですね。

ユーザに知らせたいけどそのまま動作を継続したい場合はReportedFailedExceptionを投げ、
どうしようもない場合は今までどおりの例外を投げてプロセスごと再起動・・・が選択可能になりました。

言うなれば、WARNとERRORの切り分けができるようになった感じでしょうか。

7.総括して、何がうれしくなったの?

全体的に見て、実際に動かしてみて困る内容への対処がそろっています。
また、Topologyのバリデーションなどで事前に問題を検知できるようになったのもうれしいですね。

もしStormを使おうか考えている方がいれば、今回を機にぜひ使ってみてください。

それでは。