バッチジョブでのストラグラーのトラブルシューティング

ストラグラーとは、作業の同時進行を妨げることで、Dataflow ジョブの速度を低下させる作業項目です。

バッチ パイプラインの場合、ストラグラーは次の特性を持つ作業アイテムとして定義されます。

  • 同じステージ内の他の作業アイテムよりも、完了までに非常に長い時間がかかる。
  • ステージ内の並列処理を軽減する。
  • 新しい処理を最初からブロックする。

最悪のケースでは、ストラグラーが作業の完了を一部ブロックしているため、ステージを完了できなくなります。

Dataflow は、バッチジョブで発生するストラグラーを検出します。Dataflow がストラグラーを検出すると、ストラグラーの原因の特定も試みます。

Google Cloud コンソールでストラグラーを表示する

Dataflow ジョブを開始した後、Google Cloud コンソールを使用して、検出されたストラグラーを表示できます。

ストラグラーは、ステージ別またはワーカー別に表示できます。このビューを使用して、ストラグラーがあるステージを探し、各ステージ内でストラグラーが発生したワーカーを特定します。

ステージごとにストラグラーを表示する

ステージごとにストラグラーを表示するには:

  1. Google Cloud コンソールで、Dataflow の [ジョブ] ページに移動します。

    ジョブに移動

  2. ジョブの名前をクリックします。

  3. ジョブの詳細ページで、[実行の詳細] タブをクリックします。

  4. [グラフ表示] リストで、[ステージの進捗状況] を選択します。進捗状況グラフには、各ステージ内で検出されたすべてのストラグラーの集計数が表示されます。

  5. ステージの詳細を表示するには、ステージのバーにカーソルを合わせます。ステージのワーカーを表示するには、詳細パネルで [ワーカーを表示] をクリックします。

ワーカーごとにストラグラーを表示する

ワーカーごとにストラグラーを表示するには:

  1. Google Cloud コンソールで、Dataflow の [ジョブ] ページに移動します。

    ジョブに移動

  2. ジョブの名前をクリックします。

  3. ジョブの詳細ページで、[実行の詳細] タブをクリックします。

  4. [グラフ表示] リストで、[ワーカーの進捗状況] を選択します。

  5. [ステージでワーカーをフィルタ] リストで、ステージを選択します。進捗状況グラフには、そのステージで検出されたストラグラーが表示されます。ストラグラーが最初に検出されたポイントはバーの色が濃くなっています。

  6. ワーカーの詳細を表示するには、ワーカーのバーの上にポインタを置きます。

[ステージ情報] パネルの [ストラグラーの詳細] セクションには、ページに表示されるすべてのワーカーのストラグラーが次の情報とともに一覧表示されます。

  • ストラグラーが検出された開始時刻。
  • ストラグラーを経験したワーカー。
  • 原因(判明している場合)。

バッチ ストラグラーのトラブルシューティング

Dataflow は、バッチ パイプラインでストラグラーの次の原因を検出します。

  • ホットキーホットキーは、同じ PCollection 内の他のキーよりもはるかに多くの要素を表すキーです。詳細については、このドキュメントのホットキーによるストラグラーのトラブルシューティングをご覧ください。

  • 低速ワーカー。低速ワーカーでは、作業アイテムの実行が通常より遅くなります。多くの場合、低速ワーカーの処理速度は、同じステージで同様の作業を行うワーカーよりも遅くなります。ワーカーの速度低下は、CPU の不足、スラッシング、マシン アーキテクチャ、ワーカー プロセスの停滞など、さまざまな要因で発生する可能性があります。速度が低下すると、Dataflow は問題を自動的に緩和しようとします。詳細については、このドキュメントの低速ワーカーによるストラグラー自動的に軽減するをご覧ください。

  • 原因不明。原因不明のストラグラーについては、「遅いジョブや停止したジョブのトラブルシューティング」の遅いバッチジョブの一般的なトラブルシューティング手順をご覧ください。

ホットキーに起因するストラグラーのトラブルシューティング

さまざまな要因によってストラグラーが発生する可能性がありますが、一般的な原因の一つホットキーの存在です。ホットキーは、同じ PCollection 内の他のキーよりもはるかに多くの要素を表すキーです。ホットキーは、Dataflow の要素の並列処理能力が制限されているため、ストラグラーを作成できます。

Dataflow がホットキーによるストラグラーを検出した場合、[ストラグラーの詳細] パネルに Hot Key が原因として表示されます。

デフォルトでは、Dataflow はホットキーのキー値を表示しません。Key-Value を表示するには、ジョブの実行時に hotKeyLoggingEnabled パイプライン オプションを true に設定します。

この問題を解決するには、データが均等に分散されていることを確認します。キーの値が多すぎる場合は、次の一連のアクションを検討してください。

たとえば、パイプラインが SQL 変換の一部として JOIN オペレーションを実行する場合、不均衡な量のデータを含むキーが GroupByKey にフィードされ、展開された JOIN オペレーションの一部として実行される可能性があります。

詳しくは、機能リクエスト beam-issue/28186 をご覧ください。

低速のワーカーによって生じるストラグラーを自動的に軽減する

低速ワーカーは Dataflow では一般的ではありませんが、ジョブのパフォーマンスに影響を与える可能性があります。パフォーマンスの問題を防ぐため、低速ワーカーを検出すると、Dataflow はワーカーでストラグラーが発生する前に問題を軽減しようとします。

自動緩和は、ホスト メンテナンス イベントをシミュレートします。このイベントは、定期的に発生する Compute Engine のメンテナンス メカニズムです。ワーカーのホスト メンテナンス ポリシーに応じて、ワーカーはライブ マイグレーションまたは再起動されます。ライブ マイグレーションの場合、ワークロードは中断されません。ワーカーが再起動されると、低速ワーカーからの進行中の作業が失われ、処理が再起動されます。

低速ワーカーが検出され、自動的に軽減された場合、ジョブ メッセージ ログに次のメッセージが記録されます。

Slow worker ... detected and automatically remediated ...

低速ワーカーはストラグラーでないため、これ以上のアクションは必要ありません。

自動緩和に失敗した場合、低速ワーカーにより、Dataflow モニタリング インターフェースにストラグラーが表示されます。

プロジェクトで、インスタンス シミュレート メンテナンス イベント リクエストの割り当てが不足している場合、自動緩和は失敗することがあります。デフォルトの割り当ての詳細については、「リソース使用量の割り当てと権限の管理」のリージョン指標の API レート制限をご覧ください。割り当て上限の引き上げをリクエストするには、「割り当ての表示と管理」の割り当て上限の引き上げをリクエストするをご覧ください。

次のステップ