拡張された Apache Spark History Server を使用して Apache Spark アプリケーションのデバッグと診断を行う
この記事では、拡張された Apache Spark History Server を使用して、完成して実行されている Apache Spark アプリケーションのデバッグおよび診断を行う方法に関するガイダンスを提供します。
Apache Spark History Server へのアクセス
Apache Spark 履歴サーバーは、完了および実行中の Spark アプリケーションの Web ユーザー インターフェイスです。 Apache Spark Web ユーザー インターフェイス (UI) は、進行状況インジケーター ノートブックまたは Apache Spark アプリケーションの詳細ページから開くことができます。
進行状況インジケーター ノートブックから Spark Web UI を開く
Apache Spark ジョブがトリガーされると、Spark Web UI を開くボタンが、進行状況インジケーターの [その他のアクション] オプション内にあります。 [Spark Web UI] を選択し、数秒待つと、Spark UI ページが表示されます。
Apache Spark アプリケーションの詳細ページから Spark Web UI を開く
Spark Web UI は、Apache Spark アプリケーションの詳細ページから開くこともできます。 ページの左側にある [監視ハブ] を選択し、Apache Spark アプリケーションを選択します。 アプリケーションの詳細ページが表示されます。
状態が実行中の Apache Spark アプリケーションの場合、ボタンに [Spark UI] とが表示されます。 [Spark UI] を選択すると、Spark UI ページが表示されます。
終了した状態の Apache Spark アプリケーションの場合、終了状態は [停止]、[失敗]、[キャンセル済み]、または [完了] のいずれかになります。 ボタンには [Spark 履歴サーバー] と表示されます。 [Spark 履歴サーバー] を選択すると、Spark UI ページが表示されます。
Apache Spark History Server の [グラフ] タブ
表示するジョブのジョブ ID を選択します。 ツール メニューの [グラフ] を選択して、ジョブ グラフ ビューを取得します。
概要
生成されたジョブ グラフで、ジョブの概要を表示できます。 既定で、グラフにはすべてのジョブが表示されます。 ジョブ IDで、このビューをフィルター処理できます。
表示
既定で、 [進行状況] 表示が選択されています。 [表示] ドロップダウン リストで [読み取り] または [書き込み] を選択して、データ フローを確認できます。
グラフ ノードに、ヒートマップの凡例に表示される色が表示されます。
再生
ジョブを再生するには、[再生] を選択します。 いつでも [停止] を選択して停止できます。 タスクの色は、再生時にさまざまな状態を示します。
Color | 意味 |
---|---|
[緑] | Succeeded (成功):ジョブは正常に完了しました。 |
オレンジ | 再試行済み: 失敗はしたものの、ジョブの最終結果には影響しないタスクのインスタンス。 このようなタスクには、後で成功する可能性がある重複するインスタンスまたは再試行インスタンスがあります。 |
青 | Running (実行中):タスクは実行中です。 |
White | 待機中またはスキップ:タスクは実行を待機しているか、ステージがスキップされました。 |
[赤] | 失敗:タスクは失敗しました。 |
次の図には、緑、オレンジ、青の状態の色が示されています。
次の図には、緑と白の状態の色が示されています。
次の図には、赤と緑の状態の色が示されています。
Note
Apache Spark 履歴サーバーでは、完了したジョブごとに再生を行うことができます (ただし、未完了のジョブの再生は許可されません)。
ズーム
ジョブ グラフを拡大または縮小するために、マウス スクロールを使用するか、画面に合わせるために、 [ウィンドウのサイズに合わせて大きさを変更] を選択します。
ツールヒント
失敗したタスクがある場合にツールヒントを表示するには、グラフ ノードをポイントし、ステージを選択して、そのステージ ページを開きます。
ジョブ グラフ タブで、次の条件を満たすタスクがある場合、ステージにはツールヒントと小さいアイコンが表示されます。
条件 | 説明 |
---|---|
データ スキュー | データの読み取りサイズ > このステージ内のすべてのタスクの平均データ読み取りサイズ * 2 かつデータ読み取りサイズ > 10 MB。 |
時間のずれ | 実行時間 > このステージ内のすべてのタスクの平均実行時間 * 2 かつ実行時間 > 2 分。 |
グラフ ノードの説明
ジョブ グラフ ノードには、各ステージの次の情報が表示されます。
- ID
- 名前または説明
- 合計タスク数
- データ読み取り: 入力サイズとシャッフル読み取りサイズの合計
- データ書き込み: 出力サイズとシャッフル書き込みサイズの合計
- 実行時間: 最初の試行の開始時刻と最後の試行の完了時刻の間の時間
- 行数: 入力レコード、出力レコード、シャッフル読み取りレコード、シャッフル書き込みレコードの合計
- 進行状況
Note
既定で、ジョブ グラフ ノードには各ステージの最後の試行の情報が表示されます (ステージの実行時間を除く)。 ただし、再生中は、グラフ ノードに各試行の情報が表示されます。
読み取りと書き込みのデータ サイズは、1 MB = 1000 KB = 1000 * 1000 バイトです。
フィードバックの提供
[フィードバックをお寄せください] を選択することで、問題のフィードバックを送信できます。
ステージ数の制限
パフォーマンスを考慮して、既定では、Spark アプリケーションのステージ数が 500 未満の場合にのみ、グラフを使用できます。 ステージが多すぎると、次のようなエラーで失敗します。
The number of stages in this application exceeds limit (500), graph page is disabled in this case.
これを回避するには、Spark アプリケーションを開始する前に、次の Spark 構成を適用して制限を引き上げてください。
spark.ui.enhancement.maxGraphStages 1000
ただし、このようにすると、ブラウザーでフェッチしてレンダリングするにはコンテンツが大きくなりすぎる場合があり、ページと API のパフォーマンスが低下する可能性があることに注意してください。
Apache Spark History Server の [診断] タブの探索
[診断] タブにアクセスするには、ジョブ ID を選択します。 次に、[ツール] メニューの [診断] を選択すると、ジョブの [診断] ビューが表示されます。 [Diagnosis](診断) タブには、 [Data Skew](データ スキュー) 、 [Time Skew](時間のずれ) 、および [Executor Usage Analysis](実行プログラムの使用状況の分析) が含まれます。
[Data Skew](データ スキュー) 、 [Time Skew](時間のずれ) 、および [Executor Usage Analysis](実行プログラムの使用状況の分析) を確認するには、各タブを選択します。
[Data Skew](データ スキュー)
[データ スキュー] タブを選択すると、指定されたパラメーターに基づいて、対応する偏りのあるタスクが表示されます。
[パラメーターの指定] - 最初のセクションには、データ スキューの検出に使用するパラメーターが表示されます。 既定の規則は次のとおりです。読み取られたタスク データが、読み取られたタスク データの平均量の 3 倍を超えており、なおかつ 10 MB を超えている。 傾斜したタスクに独自の規則を定義する場合は、パラメーターを選択できます。 [傾斜したステージ] と [スキュー グラフ] セクションは、それに応じて更新されます。
傾斜したステージ - 2 番目のセクションには、前に指定した条件を満たす偏りのあるタスクがあるステージが表示されます。 偏りのあるタスクがステージ内に複数ある場合、偏りのあるステージ テーブルには、最も偏りの大きなタスク (たとえば、データ スキューの最大データ) のみが表示されます。
Skew Chart (スキュー グラフ) - スキュー ステージ テーブルの行を選択すると、データの読み取りと実行時間に基づいて、スキュー グラフにさらに多くのタスク分布の詳細が表示されます。 偏りのあるタスクは赤でマークされ、通常のタスクは青でマークされます。 グラフには最大 100 個のサンプル タスクが表示され、タスクの詳細が右下のパネルに表示されます。
[Time Skew](時間のずれ)
[Time Skew](時間のずれ) タブには、タスクの実行時間に基づいて偏りのあるタスクが表示されます。
パラメーターの指定 - 最初のセクションには、時間の偏りの検出に使用するパラメーターが表示されます。 時間のずれを検出する既定の条件は、タスクの実行時間が平均実行時間の 3 倍を超えており、なおかつ 30 秒を超えていることです。 必要に応じてパラメーターを変更できます。 [傾斜したステージ] と [Skew Chart] (スキュー グラフ) には、前に説明した [Data Skew] (データ スキュー) タブと同様に対応するステージとタスクの情報が表示されます。
[時間のずれ] を選択すると、 [パラメーターの指定] セクションで設定されたパラメーターに従って、フィルター処理された結果が [傾斜したステージ] セクションに表示されます。 [傾斜したステージ] セクションで項目を選択すると、対応するグラフの下書きがセクション 3 に表示され、タスクの詳細が右下のパネルに表示されます。
実行プログラムの使用状況の分析
この機能は Microsoft Fabric で非推奨になりました。 それでも回避策としてこれを使用する場合は、次のように、URL のパス "/diagnostic" の背後に "/executorusage" を明示的に追加してページにアクセスしてください。