メインコンテンツまでスキップ

Spark での長時間のジョブの診断

1つのジョブがワークロードのランタイムの大部分を占めている場合、その時間は通常、そのジョブの1つまたは少数のステージに集中します。最も長いステージを見つけ、そのI/Oとタスク数を読み取ることで、問題をspill、skew、高I/O、並列処理不足などの特定の原因に絞り込むことができます。

ジョブタイムラインに時間がかかるジョブが1つかいくつか表示された場合、またはジョブを期間で並べ替えて最も時間がかかるジョブを開いた後に、このページを使用します。タイムラインに異なるパターンが表示される場合は、そのパターンのページを参照してください。

最長のステージを見つける​

まず、ジョブの最長ステージを特定することから始めます。ジョブ ページの下部にあるステージのリストまでスクロールし、実行時間順に並べ替えます:

ロングステージ

ステージI/Oの詳細​

[入力] 、 [出力] 、 [シャッフル読み取り] 、 [シャッフル書き込み] 列を使用して、このステージの高レベルの I/O データを確認します。

ロングステージI/O

各列には以下が表示されます:

  • 入力: このステージが、 Delta Lake、 Parquet、 CSVファイルなどのストレージから読み取ったデータの量。
  • 出力: このステージがDelta Lake、Parquet、CSVなどのファイルとしてストレージに書き込んだデータ量。
  • シャッフル読み取り: このステージが読み取ったシャッフル データの量。
  • シャッフル書き込み: このステージで書き込まれたシャッフル データの量。

これらの数値を後のステップのために記録してください。

タスクの数​

長いステージのタスクの数から原因を特定することができます。次のスクリーンショットは、タスクの数を確認する場所を示しています。

タスク数の決定

単一のタスクは、ステージが並列処理なしで実行されることを意味し、残りのクラスターが待機している間に 1 つのコアのみが作業を行います。ステージにタスクが 1 つしかない場合は、タスクが 1 つだけの長時間実行される Spark ステージを参照してください。

ステージの詳細を見る​

ステージに複数のタスクがある場合は、さらに調査してください。ステージの説明内のLinkをクリックすると、最も長いステージの詳細を表示できます。

オープンステージ情報

次に、スキューとspill」を参照してください。