バージョン1.0は、Apache Stormの進化における大きなマイルストーンだ。Apache Software FoundationでApache StormのVPを務めるP. Taylor Goetz氏はそう述べた。このバージョンには、多数の新機能と改善が盛り込まれている。特に、パフォーマンスが3倍–16倍向上しているという。
Stormはストリーミングデータの分散処理を可能にするイベントプロセッサーだ。Stormアプリケーションは「Spout」と「Bolt」を使い、情報ソースとデータハンドラからなる有向巡回グラフを構成する。Stormの主な特徴は、Hadoopなどでできるバッチ処理とは対照的に、リアルタイムデータを処理できることだ。
Goetz氏によると、Storm 1.0は以前のバージョンよりも最大16倍、多くのユースケースで3倍高速だという。この大きなパフォーマンス改善は、具体的に以下の変更によるそうだ。
SpoutOutputCollector.emit()
コール内のClojurereduce
関数をJavaで再実装- Spoutレベルの代わりに
DisruptorQueue
のバッチを導入。遅延コストは若干あるものの、大幅なスループット改善につながる。
かねてより、Stormのパフォーマンスは、他の人気のある分散処理フレームワークApache FlinkとApache Sparkに対する大きな競争優位の一つだった。これはYahooのエンジニアによる広範囲に及ぶベンチマークにも表れている。
これに加えて、Storm 1.0には、以下のような注目すべき新機能が多数入っている。
- Pacemaker。ワーカーのハートビートを処理するハートビートデーモン。インメモリなのでZooKeeperよりも優れたパフォーマンスを発揮するはずだ。
- 分散キャッシュと関連API。トポロジー間でファイルの共有を可能にする。影響のあるトポロジーを再デプロイする必要なく、常にファイルを更新できる。これは、ファイル更新に再デプロイを必要とする、トポロジーjar内にリソースファイルを入れる現在のプラクティスを改善するものだ。
- Nimbusの高可用性。単一のNimbusインスタンスをNimbusノードの動的クラスターに置き換える。カレントノードに問題があると新しい「リーダー」が選出される。
- ストリーミングウィンドウAPI。 直近1時間で最も話題になったものを計算するなど、データ処理に適用するウィンドウ定義のサポートを追加する。これまでは開発者が独自にウィンドウのロジックを構築する必要があった。
- 自動バックプレッシャー。タスクのバッファーサイズ比で表される所定の限界に達すると、トポロジーのSpoutを自動的にスローダウンする。
- リソース対応スケジューラー。新しいスケジューラー実装は、クラスターで利用可能なメモリ量とCPUリソースを考慮し、要件に最適なワーカーにタスクをスケジュールする。
- 動的ワーカープロファイリング。ヒープダンプやJStackアウトプットなどのワーカープロファイルデータを、Storm UIから取得できるようにする。
Apache Storm 1.0はGitHubから入手できる。またStormダウンロードページでは、各種パッケージ形式でダウンロードできる。
Rate this Article
- Editor Review
- Chief Editor Action