Beamの動的な作業再分散

今朝、Google Cloud DataflowチームのEugeneとMaloが、誰一人取り残さない:Google Cloud Dataflowの動的な作業再分散を投稿しました。この記事では、Cloud Dataflowにおける、よく知られたストラグラー問題の解決策について説明しています。

多数のタスクを並列実行する大規模バッチ処理ジョブでは、一部のタスク(ストラグラー)は、ジョブ発行時の並列チャンクへの作業分割が不完全なために、他のタスクよりも完了に時間がかかる場合があります。通常、ストラグラーを待つということは、ジョブ全体の完了が遅れ、最終的にあまり活用されない可能性のあるマシンを過剰に予約してしまうことを意味します。Cloud Dataflowの動的な作業再分散は、ほとんどの場合、ストラグラーを軽減できます。

Apache Beam(インキュベーション)コミュニティに注目していただきたいのは、Cloud Dataflowの動的な作業再分散は、Beamのランナー非依存BoundedSource APIの上に、ランナー固有の制御ロジックを使用して実装されていることです。具体的には、ストラグラーから作業を奪うために、ランナーはリーダーのsplitAtFractionメソッドを呼び出すだけで済みます。これにより、残りの作業を含む新しいソースが生成され、ランナーはそのソースを別のアイドル状態のワーカーに渡すことができます。Beamが成熟するにつれて、他のランナーもこれらのAPIがパフォーマンスの向上に役立つかどうか、動的な作業再分散を実装すること、および他の問題点を解決するのに役立つAPIの変更について協力することに関心を持つことを願っています。