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

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

ストラグラーは以下の特性を持つ作業アイテムです。

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

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

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

Dataflow モニタリング インターフェースでストラグラーを表示する

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

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

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

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

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

    ジョブに移動

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

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

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

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

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

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

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

    ジョブに移動

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

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

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

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

  6. ワーカーの詳細を表示するには、そのワーカーのバーにカーソルを合わせます。

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

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

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

Dataflow がストラグラーの主な原因を検出します。

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

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

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

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

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

次のステップ