Kekeの日記

エンジニア、読書なんでも

Apache Heron概要とApache Stormとの比較

image.png

Apache Heronとは

公式サイトから。

A realtime, distributed, fault-tolerant stream processing engine from Twitter

日本語訳。

 Twitter発のリアルタイム、分散、ミス許容ストリーム処理エンジン

注目する点としては、

  • Apache Stormのトポロジーがmavenpom.yamlを少し編集することで直接採用できること。
  • Schduler-driven環境(YARNなど)で動作する。  ステートフルにすることができる。  Heron UIというリッチなUIがある。

設定ファイル

ファイル名  何を設定するか
scheduler.yaml launcher, scheduler, topologyランタイムの設定。
statemgr.yaml ステートフルにするための設定。
uploader.yaml topologyのjarファイルをuploaderにuploadするためのもの。
heron_internals.yaml Heronがどのように動作するかを設定する。
metrics_sinks.yaml システムのランタイムとトポロジのメトリックすがどこにルーティングされるかを記述。
packing.yaml packingアルゴリズムのための設定。デフォルトではラウンドロビンである。
client.yaml Heronのクライアントの挙動を記述する。

Apache Heronのダウンロード

Macからは簡単にダウンロードすることができます。

brew install heron

 アーキテクチャ

以下のようにアーキテクチャがなっています。

 Topologyのコンポーネント

image.png

Topology Master topologyのライフサイクルをすべて管理します。 いくつものコンテナで実行する。

Container Heronのトポロジーはそれぞれいくつかのコンテナで構成され、それぞれHeronインスタンスとStream manager, Metrics managerが存在する。Topology Masterと通信してDAGを正しく構成できるかをチェックする。

Stream Manager topologyの構成要素間のタプルの流れに関して働きかける。

image.png

*Heron Instance これはspoutかboltとして単一のタスクである。

Metrics Manager コンテナの中で、メトリックスを収集する。 そしてTopology ManagerとGriphiteをはじめとする外部収集基盤に送信する。

クラスタレベルのコンポーネント

Heron CLI CLIツールである。

Heron UI リッチな可視化インターフェースである。

Heron Tracker トポロジの情報を中央に集める役割がある。

Apache Heronのtopology

DAGがストリームを処理するために使われる。 トポロジーはステートレスでもステートフルでもなりうることができる。

二つの重要な概念があります。

  • Spout: トポのジーのソースとなるもの。データを取得してくるところ。下の図で言うS1。
  • Bolts: 定義した変換処理を施す。下の図でいうBX。

image.png

Topologyのアップロード

Heronのtopologyファイル(jar)をアップロードする構成は以下のようになっています。

image.png

メッセージセマンティクス

Apache Heronは以下の三つのメッセージセマンティクスをサポートしています。

名前  概要
At most once 最高で1つである。しかし、データに欠損があるかもしれない。
At least once 最低でも一つはあるが、重複はあるかもしれない。
Effectively once メッセージは重複して永続化されるが、処理するときは重複がないように保証される。

図にすると以下のようなものです。公式サイトのものが非常にわかりやすいので抜粋させていただきました。

image.png

特にEffectively onceについては、Apache Pulsarの記事で解説しているので、詳しく知りたければご覧ください。

www.1915keke.com

Apache Stormとの比較

f:id:bobchan1915:20180822014103p:plain

メタデータ

採用企業 Apache Stormは非常に多いのに対して、Apache Heronは今のところただ一つ。

機能面

  • 各Heron Intstanceが1タスクしか保有しないため、デバックが簡単である。
  • メトリックスマネージャーがいて、SpoutとBoltをひと単位として捉えるので、収集・解析が簡単になった
  • Apache StormはNimbusがすべてのトポロジーを管理していたので単一障害点であったが、Topology Managerが独立していることで障害に強くなったといえる。
  • レイテンシ、スループットなどがApache Heronの方が優れている。
  • BackPressureがあることによって、予測を立てられるようになった

参考文献