使用擴充的 Apache Spark 記錄伺服器對 Apache Spark 應用程式進行偵錯和診斷
本文將說明如何使用擴充的 Apache Spark 記錄伺服器,對已完成和執行中的 Apache Spark 應用程式進行偵錯及診斷。
存取 Apache Spark 記錄伺服器
Apache Spark 記錄伺服器是已完成和執行中 Spark 應用程式的 Web 使用者介面。 您可以從進度列指示器筆記本或 Apache Spark 應用程式詳細資料頁面開啟 Apache Spark 網頁使用者介面 (UI)。
從進度列指示器筆記本開啟 Spark 網頁 UI
觸發 Apache Spark 工作時,開啟 [Spark 網頁 UI] 的按鈕位於進度列指示器中的 [更多動作] 選項內。 選取 [Spark 網頁 UI],並等候幾秒鐘,然後 [Spark UI] 頁面隨即出現。
從 Apache Spark 應用程式詳細資料頁面開啟 Spark 網頁 UI
Spark 網頁 UI 也可以透過 Apache Spark 應用程式詳細資料頁面開啟。 選取頁面左側 [監視],然後選取 Apache Spark 應用程式。 應用程式的詳細資料頁面隨即出現。
對於狀態為執行中的 Apache Spark 應用程式,按鈕會顯示 Spark UI。 選取 [Spark UI],然後 [Spark UI] 頁面就會出現。
對於狀態為已結束的 Apache Spark 應用程式,結束狀態可以是 [已停止]、[失敗]、[已取消] 或 [已完成]。 按鈕會顯示 Spark 歷程記錄伺服器。 選取 [Spark 歷程記錄伺服器],然後 [Spark UI] 頁面就會出現。
Apache Spark 記錄伺服器中的 [圖表] 索引標籤
選取您要檢視之作業的作業識別碼。 接著選取工具功能表上的 [圖表] 以取得作業圖表檢視。
概觀
您可以在產生的作業圖表中查看作業概觀。 根據預設,圖表會顯示所有作業。 您可以依 [作業識別碼] 篩選此檢視。
顯示器
預設會選取 [進度] 顯示。 您可以在 [顯示] 的下拉式清單中選取 [讀取] 或 [寫入] 來檢查資料流程。
圖表節點會顯示熱度圖圖例中所顯示的色彩。
播放
若要播放工作,請選取 [播放]。 您可以隨時選取 [停止]。 播放時,工作色彩會顯示不同的狀態:
Color | 意義 |
---|---|
綠 | 成功:作業已順利完成。 |
Orange | 重試:失敗但不會影響作業最終結果的工作執行個體。 這些工作具有稍後可能會成功的重複或重試執行個體。 |
藍色 | 執行中:工作正在執行中。 |
白色 | 等候中或已略過:工作在等候執行,或已略過該階段。 |
紅 | 失敗:工作已失敗。 |
下圖顯示綠色、橙色和藍色的狀態色彩。
下圖顯示綠色和白色的狀態色彩。
下圖顯示紅色和綠色的狀態色彩。
注意
Apache Spark 歷程記錄伺服器允許播放每個已完成的工作 (但不允許播放未完成的工作)。
Zoom
使用滑鼠滾動以放大/縮小作業圖表,或選取 [縮放至適當比例],使其符合螢幕大小。
工具提示
當工作失敗時,將滑鼠停留在圖表節點上以查看工具提示,然後選取 [階段] 以開啟 [階段] 頁面。
在 [作業圖表] 索引標籤上,階段會有工具提示,而如果有符合下列條件的工作,就會顯示小圖示:
Condition | 描述 |
---|---|
資料扭曲 | 資料讀取大小 > 此階段中所有工作的平均資料讀取大小 * 2 和資料讀取大小 > 10 MB。 |
時間扭曲 | 執行時間 > 此階段中所有工作的平均執行時間 * 2,而執行時間 > 2 分鐘。 |
圖表節點描述
作業圖表節點會顯示每個階段的下列資訊:
- 識別碼
- 名稱或描述
- 總計工作數
- 讀取的資料:輸入大小和隨機讀取大小的總和
- 寫入的資料:輸出大小和隨機寫入大小的總和
- 執行時間:第一次嘗試的開始時間與最後一次嘗試的完成時間之間的時間
- 資料列計數:輸入記錄、輸出記錄、隨機讀取記錄和隨機寫入記錄的總和
- 進度
注意
依預設,[作業圖表] 節點會顯示每個階段上一次嘗試的資訊 (但階段執行時間) 除外。 不過,在播放期間,圖表節點會顯示每次嘗試的資訊。
讀取和寫入的資料大小為 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 記錄伺服器中的 [診斷] 索引標籤
若要存取 [診斷] 索引標籤,請選取作業識別碼。 選取工具功能表上的 [診斷] 以取得作業診斷檢視。 [診斷] 索引標籤包括 [資料扭曲]、[時間扭曲] 和 [執行程式使用狀況分析]。
透過個別選取索引標籤,檢查 [資料扭曲]、[時間扭曲] 和 [執行程式使用狀況分析]。
資料扭曲
選取 [資料扭曲] 索引標籤時,就會根據指定的參數顯示對應的扭曲工作。
指定參數 -第一個區段會顯示用來偵測資料扭曲的參數。 預設規則為:工作資料讀取大於平均工作資料讀取的三倍,而工作資料讀取超過 10 MB。 如果您想要為扭曲的工作定義自己的規則,您可以選擇參數。 [扭曲階段] 和 [扭曲字元] 區段會據以重新整理。
扭曲階段 -第二個區段會顯示階段,其中有扭曲的工作符合之前指定的準則。 如果某個階段中有一個以上的扭曲工作,扭曲階段資料表只會顯示最扭曲的工作 (例如,資料扭曲的最大資料)。
扭曲圖表 - 選取扭曲階段資料表中的資料列時,扭曲圖表會根據讀取和執行時間的資料,顯示更多工作分散詳細資料。 扭曲的工作會以紅色標示,而一般工作則會以藍色標示。 圖表最多會顯示 100 個範例工作,工作詳細資料會顯示在右下方的面板中。
時間扭曲
[時間扭曲] 索引標籤會根據工作執行時間顯示扭曲的工作。
指定參數 - 第一個區段會顯示用來偵測時間扭曲的參數。 偵測時間扭曲的預設準則是:工作執行時間大於平均執行時間的三倍,而工作執行時間大於 30 秒。 您可以根據您的需求變更參數。 [扭曲階段] 和 [扭曲圖表] 會顯示對應的階段和工作資訊,就像之前描述的 [資料扭曲] 索引標籤一樣。
選取 [時間扭曲],然後根據 [指定參數] 區段中所設定的參數,在 [扭曲階段] 區段中顯示篩選的結果。 選取 [扭曲階段] 區段中的一個項目,然後對應的圖表會在區段 3 繪製,而且工作詳細資料會顯示在右下方面板中。
執行程式使用狀況分析
此功能已在 Fabric 中被取代。 如果您仍想要將此作為因應措施,請在網址的路徑 "/diagnostic" 後面明確新增 "/executorusage" 來存取頁面,如下所示: