分散リアルタイム処理フレームワーク Storm(その1)
少し前になりますが、2011/09/19に、Twitterから、分散リアルタイム処理フレームワーク「Storm」がオープンソース化されて公開されました。
最近は、Hadoopの効果により、BigDataへの注目度が高まっていますが、Hadoopが領分とするバッチ処理から、よりリアルタイム処理へのニーズが高まってきているように思います。
Stormは、BigDataに対してリアルタイムの処理を可能にするフレームワーク。
Hadoopと比較されることがありますが、個人的には、それぞれ用途が違うと思っているので、比較することにあまり意味はなく、特性に応じて使い分けることが重要だと思います。
Stormの特性は、以下のような点。
- 非常に広範囲のユースケース
- メッセージ処理、ストリーム処理、データストリーム上の継続的なクエリ実行・クライアントへの結果配信、同時並行で行う対話形式での検索回答(分散RPC)など、様々な処理をサポートする。
- 拡張性
- 水平方向にスケーラブル。計算は複数のスレッド、プロセス、サーバーを使って並列に行われる。
- データ損失が無いことの保証
- 各メッセージ(イベント)は少なくと1度は処理されることを保証する(S4などと異なる点)。
- 堅牢性
- 面倒な管理を必要としない。
- フォールトトレラント(無停止運用)
- ワーカープロセスとノード故障を管理していて、障害が発生した場合、自動でタスクの再割当てを行う。
- プログラミング言語を選ばない
Stormは、Twitterのバッググラウンドとして利用されているようですが、フレームワーク自体は、Twitterの処理に依存するものではなく、広く応用できるモノです。
まだまだ情報も少なく、インストールするだけでも大変な面はありますが、今後の動向が楽しみでもあります。