分散リアルタイム処理フレームワーク Storm(その1)

少し前になりますが、2011/09/19に、Twitterから、分散リアルタイム処理フレームワーク「Storm」がオープンソース化されて公開されました。

最近は、Hadoopの効果により、BigDataへの注目度が高まっていますが、Hadoopが領分とするバッチ処理から、よりリアルタイム処理へのニーズが高まってきているように思います。


Stormは、BigDataに対してリアルタイムの処理を可能にするフレームワーク

Hadoopと比較されることがありますが、個人的には、それぞれ用途が違うと思っているので、比較することにあまり意味はなく、特性に応じて使い分けることが重要だと思います。


Stormの特性は、以下のような点。

  • 非常に広範囲のユースケース
    • メッセージ処理、ストリーム処理、データストリーム上の継続的なクエリ実行・クライアントへの結果配信、同時並行で行う対話形式での検索回答(分散RPC)など、様々な処理をサポートする。
  • 拡張性
    • 水平方向にスケーラブル。計算は複数のスレッド、プロセス、サーバーを使って並列に行われる。
  • データ損失が無いことの保証
    • 各メッセージ(イベント)は少なくと1度は処理されることを保証する(S4などと異なる点)。
  • 堅牢性
    • 面倒な管理を必要としない。
  • フォールトトレラント(無停止運用)
    • ワーカープロセスとノード故障を管理していて、障害が発生した場合、自動でタスクの再割当てを行う。
  • プログラミング言語を選ばない


Stormは、Twitterのバッググラウンドとして利用されているようですが、フレームワーク自体は、Twitterの処理に依存するものではなく、広く応用できるモノです。

まだまだ情報も少なく、インストールするだけでも大変な面はありますが、今後の動向が楽しみでもあります。