Apache Storm
ストリーミングデータをリアルタイムに処理するためのシステム
Apache™ Storm によって、Enterprise Hadoopで信頼性の高いリアルタイムデータ処理が可能になります。YARN 上の Storm は、リアルタイム分析や機械学習、運用の継続的監視に向け強力な機能を提供します。
Apache Slider で Storm と YARN を統合することで、YARN による Storm の管理が可能になると共に、データガバナンスやセキュリティためのクラスタリソースや、最新のデータアーキテクチャーの運用コンポーネントを活用できるようになります。
Stom の機能
Stormは、大規模な高速データを処理するための、分散リアルタイム処理システムです。超高速な Storm は、中規模サイズのクラスタ上で、1ノードあたり毎秒100万以上のレコードを処理することができます。企業は、このスピードを Hadoop のデータアプリケーションに提供することで、不意の事態の発生を避け、優れた結果を生むことができます。
これにより新たに実現可能となる業務としては、リアルタイムでのカスタマーサービス管理や、データの収益化、運用ダッシュボード、サイバーセキュリティ分析や脅威の検知などがあげられます。
以下に Storm の典型的な「防止」と「最適化」のユースケースを示します。
"Prevent" Use Cases | "Optimize" Use Cases | |
---|---|---|
Financial Services |
|
|
Telecom |
|
|
Retail |
|
|
Manufacturing |
|
|
Transportation |
|
|
Web |
|
|
Stormは、シンプルであり、開発者はどんなプログラミング言語でも、Storm トポロジーを記述することができます。Storm は、その5つの特長によって、リアルタイムデータ処理に向け理想的なものとなっています。Storm は:
- 高速 - ベンチマークでは、100 バイトのメッセージを1ノードあたり秒間100万件処理しています
- 拡張性 - マシンのクラスタ全体で並列計算を行います
- フォールトトレラント - Strom は、ワーカーが停止すると自動的に再起動します。ノードが停止した場合には、別のノードでワーカーを再起動します。
- 信頼性 - Stormでは、データの各ユニット (タプル : tuple) が少なくても1回、一度限り処理することを保証しています。メッセージは障害が発生した場合に限り、再生されます。
- 容易な運用 - 標準設定を使って、すぐ業務に活用できます。Stormでは、導入後の容易な運用が可能です。
Strom の動作の仕組み
Storm クラスタは、 3つのノードで構成されています:
- Nimbus ノード (Hadoop の JobTracker に似たマスターノード)
- 実行に必要なコンピュート機能をアップロード
- クラスタ全体にコードを配布
- クラスタ横断的にワーカーを起動
- 実行状態を監視し、必要に応じてワーカーをリロケート
- ZooKeeper ノード - Storm クラスタをコーディネート
- Supervisor ノード - Zookeeper 経由でNimbus と通信して、Nimbus からのシグナルに従ってワーカーを開始または停止します。
以下の 5つの主要な概念は、Storm のデータ処理を理解をする上で役に立ちます:
- タプル (Tuple) - エレメントの順序付きリスト例えば「4-タプル」は (7, 1, 3, 7) のようになります。
- ストリーム (Stream) - 連続して流れてくるタプル
- スパウト (Spout) - コンピュテーションのストリームのソース (Twitter API など)
- ボルト (Bolt) - インプットストリームを処理し、アウトプットストリームを生成。ここでは、ファンクションの実行、フィルター、集約、データの join、データベースとのやり取りが可能。
- トポロジー (Toppology) - 全体的な処理をスパウトとボルトのネットワークとして視覚的に表現したもの (下図参照)
Storm ユーザーは、データがスパウトからストリーミングで入ってきた際のデータ処理方法に対するトポロジーを定義します。データが入ってくると処理が実施されれ、実行結果を Hadoop に渡します。コミュニティがどのように Storm と Hadoop を連携させ、エンタープライズ向けに準備を行っているかという点について、その詳細をご確認ください。