Beamと機能
2016/03/17
ランナーの機能の明確化と正式化
最初のコードドロップが完了し(Dataflow SDKとランナー、Flinkランナー、Sparkランナー)、Storm、Hadoop、Gearpump(その他)のランナー実装に関心が示されていることから、Apache Beam(インキュベーション中)コミュニティにおける大きな疑問、つまり各ランナーがサポートできる機能は何かという問題に取り組み始めたいと思いました。
すべてのランナーがBeamモデル(以前はDataflowモデルと呼ばれていました)に含まれるセマンティクスの完全なスイートをサポートする世界が望ましいですが、実際には、一部のランナーが提供できない特定の機能が常に存在します。たとえば、Hadoopベースのランナーは本質的にバッチベースであり、非有界コレクションのサポートを(簡単に)実装できない可能性があります。しかし、それは、多くの用途に非常に役立つことを妨げるものではありません。他のケースでは、あるランナーによって提供される実装は、別のランナーによって提供される実装とはわずかに異なるセマンティクスを持つ場合があります(たとえば、現在のランナーのスイートはすべて正確に1回の配信保証をサポートしていますが、歓迎される追加となるApache Samzaランナーは、現在少なくとも1回のみをサポートします)。
状況を明確にするために、既存のすべてのランナーの機能マトリックスで、モデルによって対処される4つの主要な質問、つまり何 / どこ / いつ / どのように(これらの質問に馴染みがない場合は、概要についてStreaming 102をお読みください)を中心に分類し、Beamモデルの主要な機能を列挙することに取り組んできました。この表は、モデルの進化、私たちの理解の深まり、ランナーの作成や機能の追加に合わせて、時間の経過とともに維持されます。
以下に、既存のランナーの機能に関する現在の理解のスナップショットの概要を記載します(完全な詳細、説明、およびJiraリンクについては、ライブバージョンを参照してください)。統合はまだ進行中であるため、システム全体はまだ完全に安定した使用可能な状態ではありません。しかし、それは近い将来に変化するはずであり、最初のサポート対象のBeam 1.0リリースが発生したときに、このブログで大声で明確に更新します。
それまでの間、これらの表は、ごく近い将来に私たちがどこにいるかを明確にし、既存のランナーが何ができるか、そしてランナーの実装者が次に何に取り組むかを予測するのに役立ちます。
何が計算されているか? | |||||||
---|---|---|---|---|---|---|---|
Beamモデル | Google Cloud Dataflow | Apache Flink | Apache Spark | ||||
ParDo | |||||||
GroupByKey | |||||||
Flatten | |||||||
Combine | |||||||
複合変換 | |||||||
サイド入力 | |||||||
Source API | |||||||
アグリゲーター | |||||||
キー付き状態 | |||||||
イベント時間におけるどこ? | |||||||
Beamモデル | Google Cloud Dataflow | Apache Flink | Apache Spark | ||||
グローバルウィンドウ | |||||||
固定ウィンドウ | |||||||
スライディングウィンドウ | |||||||
セッションウィンドウ | |||||||
カスタムウィンドウ | |||||||
カスタムマージウィンドウ | |||||||
タイムスタンプ制御 | |||||||
処理時間におけるいつ? | |||||||
Beamモデル | Google Cloud Dataflow | Apache Flink | Apache Spark | ||||
構成可能なトリガー | |||||||
イベント時間トリガー | |||||||
処理時間トリガー | |||||||
カウントトリガー | |||||||
[メタ]データ駆動型トリガー | |||||||
複合トリガー | |||||||
許容される遅延 | |||||||
タイマー | |||||||
リファインメントはどのように関連付けられるか? | |||||||
Beamモデル | Google Cloud Dataflow | Apache Flink | Apache Spark | ||||
破棄 | |||||||
蓄積 | |||||||
蓄積と撤回 | |||||||
有界分割可能DoFnのサポート状況 | |||||||
Beamモデル | Google Cloud Dataflow | Apache Flink | Apache Spark | ||||
ベース | |||||||
サイド入力 | |||||||
分割可能DoFnによるチェックポイント開始 | |||||||
動的分割 | |||||||
バンドル完了 | |||||||
非有界分割可能DoFnのサポート状況 | |||||||
Beamモデル | Google Cloud Dataflow | Apache Flink | Apache Spark | ||||
ベース | |||||||
サイド入力 | |||||||
分割可能DoFnによるチェックポイント開始 | |||||||
動的分割 | |||||||
バンドル完了 | |||||||