本文提供如何使用擴充 Apache Spark 歷程記錄伺服器來偵錯和診斷已完成和執行中的 Apache Spark 應用程式的指引。
存取 Apache Spark 歷程記錄伺服器
Apache Spark 歷程記錄伺服器是已完成和執行 Spark 應用程式的 Web 使用者介面。 您可以從進度指標筆記本或 Apache Spark 應用程式詳細資訊頁面開啟 Apache Spark Web 使用者介面 (UI)。
從進度指標筆記本開啟 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 歷程記錄伺服器中的 [圖形] 索引標籤
選取您要檢視之工作的工作 ID。 然後,選取工具功能表上的 圖形 以取得作業圖形檢視。
Overview
您可以在產生的工作圖表中查看工作概觀。 依預設,圖表會顯示所有工作。 您可以依 工作識別碼篩選此檢視。
Display
依預設,會選取 「進度」 顯示。 您可以在 [顯示] 下拉式清單中選取 [讀取] 或 [ 寫入 ]來檢查資料流程。
圖形節點會顯示熱圖圖例中顯示的顏色。
Playback
若要播放作業,請選取 播放。 您可以隨時選取 [停止] 來停止。 工作顏色在播放回放時顯示不同的狀態:
| Color | Meaning |
|---|---|
| Green | 成功:工作已成功完成。 |
| Orange | 已重試:失敗但不會影響作業最終結果的工作實例。 這些任務有重複或重試執行個體,可能會在稍後成功。 |
| Blue | 執行中:工作正在進行。 |
| White | 等待或略過:任務正在等待執行,或該階段已被略過。 |
| Red | 失敗:工作失敗。 |
下圖顯示綠色、橘色和藍色狀態色彩。
下圖顯示綠色和白色狀態色彩。
下圖顯示紅色和綠色狀態色彩。
Note
Apache Spark 歷程記錄伺服器允許播放每個已完成的工作 (但不允許播放未完成的工作)。
Zoom
使用滑鼠捲動來放大和縮小工作圖表,或選取 縮放以符合 以使其符合螢幕。
Tooltips
將滑鼠停留在圖形節點上,可在有失敗工作時查看工具提示,然後選取階段以開啟其階段頁面。
在工作圖表索引標籤上,如果階段具有符合下列條件的工作,則會顯示工具提示和小圖示:
| Condition | Description |
|---|---|
| 資料扭曲 | 資料讀取大小 > :此階段內所有任務的平均資料讀取大小 * 2,資料讀取大小 > :10 MB。 |
| 時間偏差 | 執行時間 > :此階段內所有任務的平均執行時間*2,執行時間 > :2分鐘。 |
圖形節點說明
工作圖表節點會顯示每個階段的下列資訊:
- ID
- 名稱或描述
- 任務總數
- 資料讀取:輸入大小和隨機讀取大小的總和
- 資料寫入:輸出大小和隨機寫入大小的總和
- 執行時間:第一次嘗試的開始時間與最後一次嘗試的完成時間之間的時間
- 行數:輸入記錄、輸出記錄、隨機讀取記錄和隨機寫入記錄的總和
- Progress
Note
依預設,工作圖表節點會顯示每個階段上次嘗試的資訊 (階段執行時間除外)。 不過,在播放期間,圖形節點會顯示每次嘗試的資訊。
讀寫的資料大小為1MB = 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 歷程記錄伺服器中的 [診斷] 索引標籤
若要存取 [診斷] 索引標籤,請選取作業識別碼。 然後選取工具功能表上的 [診斷] 以取得作業 [診斷] 檢視。 診斷標籤包括 資料偏差、 時間偏差和 執行程式使用情況分析。
分別選取索引標籤,以檢查 資料偏差、 時間偏差和 執行器使用情況分析 。
資料傾斜
當您選取 「資料傾斜 」標籤時,會根據指定的參數顯示對應的傾斜任務。
指定參數 - 第一個區段會顯示參數,這些參數可用來偵測資料偏差。 預設規則為:任務資料讀取大於平均任務資料讀取量的三倍,且任務資料讀取量大於10MB。 如果您想要為傾斜的任務定義自己的規則,您可以選擇參數。 「 傾斜舞台 」和「 傾斜字符 」區段會相應地重新整理。
傾斜階段 — 第二個區段會顯示階段,這些階段具有符合先前指定條件的傾斜任務。 如果一個階段中有多個傾斜的任務,則傾斜的階段表格只會顯示最傾斜的任務 (例如,資料傾斜的最大資料)。
傾斜圖 - 選取傾斜階段表格中的列時,傾斜圖會根據資料讀取和執行時間顯示更多任務分佈詳細資訊。 傾斜的任務以紅色標記,正常任務以藍色標記。 圖表最多顯示 100 個範例任務,任務詳細資料會顯示在右下角面板中。
時間偏斜
「 時間偏斜 」標籤會根據任務執行時間顯示傾斜的任務。
指定參數 - 第一個區段會顯示參數,這些參數可用來偵測時間偏差。 偵測時間偏差的預設準則為:任務執行時間大於平均執行時間的三倍,且任務執行時間大於 30 秒。 您可以根據需要變更參數。 「 傾斜階段 」和 「傾斜圖」 會顯示對應的階段和任務資訊,就像先前所述的「 資料傾斜 」標籤一樣。
選擇時間偏移,然後根據指定參數部分中設置的參數,將過濾結果顯示在偏移階段區域。 在 「傾斜階段」 區段中選取一個項目,然後在第 3 區段中草擬對應的圖表,並將任務詳細資訊顯示在右下角面板中。
執行器使用分析
此功能現已在 Fabric 中被取代。 如果您仍想使用此作為解決方法,請透過在 URL 中的路徑「/diagnostic」後面明確新增「/executorusage」來存取該頁面,如下所示:
Spark Executor 輪替日誌:更輕鬆地存取大型與長時間任務
隨著 Spark 應用程式的規模和持續時間不斷增長,高效的日誌管理和分析變得越來越重要。 為了滿足這些不斷變化的需求,我們引進了 Spark 歷程記錄伺服器 (適用於已完成的應用程式) 和 Spark UI (用於執行中的應用程式) 的增強功能,為 Spark 3.4 和更新版本啟用執行程式滾動記錄。
透過此增強功能,當執行程式記錄超過 16MB 或 Spark 工作執行超過一小時時,系統會自動將記錄分割為每小時的區段。 這使得導航、查看和下載日誌變得更加容易,而無需處理極大的文件。
您現在可以:
- 按小時查看日誌以快速確定特定的執行窗口
- 在工作仍在執行時存取最新的活動日誌。
- 根據需要下載單個每小時日誌或所有日誌一起下載
此功能使用戶能夠輕鬆定位和分析特定時間點的日誌,同時避免下載或開啟大量單一日誌檔案的麻煩。
以下是「執行程式滾動日誌」視圖的範例: