全部產品
Search
文件中心

MaxCompute:使用Spark UI診斷作業

更新時間:Mar 13, 2026

SparkUI是開源Spark作業診斷的重要工具,本文介紹如何使用SparkUI診斷作業。

使用SparkUI診斷作業

步驟一:擷取連結

開啟MaxCompute Spark LogView URL後,可擷取SparkUI連結,SparkUI是開源Spark作業診斷的重要工具,可用於擷取作業日誌,以檢查作業是否已正常提交並執行。

在MaxCompute Spark LogView URL的summary模組下找到Spark UI連結History Server連結,如圖所示:

image

  • Spark Web UI:僅在作業運行時才能開啟,包含當前作業進度及線程棧等資訊

  • Spark History Server:作業結束後可以開啟,事件從驅動傳遞至HistoryServer的過程存在1至3分鐘的延遲,立刻開啟Tracking URL時,可能會出現一個頁面,顯示Application application_1560240626712_2078769635 not found.錯誤。請稍後重試即可正常訪問。

    若在kube模式下查看History Server,需要在設定檔spark-defaults.conf中修改eventLog 的相關參數,如下:

    (必須)spark.eventLog.enabled = true 
    (必須)spark.eventLog.dir = /workdir/eventlog/
    (可選)spark.eventLog.compress = true
    (可選)spark.eventLog.overwrite = true

步驟二:通過SparkUI查看作業基本資料

複製上述該連結到瀏覽器,可以看到 Spark-Web-UI,如圖所示:

image

  • 點擊Environment頁簽確認設定的Spark參數。

    排查Environment頁簽設定的配置參數,確認是否存在配置了但是未生效的情況,這種情況通常由於沒有設定SPARK_HOME導致spark-defaults.conf讀取不正確。

  • 點擊Executors頁簽重點關注是否存在Dead節點Thread Dump

    image

    • 點擊Logs-StdOut按鈕可以看到節點結果輸出。

    • 點擊Logs-StdErr按鈕可以看到節點log4j日誌。

步驟三:利用SparkUI排查阻塞或運行緩慢的作業

SparkUI支援查看正在啟動並執行任務及其狀態。在Executor頁簽中,可以查看每個Executor的線程棧快照。這由每個Executor的線程轉儲(thread dump)按鈕提供。

  1. 開啟運行中的SparkUI,切換到Executors頁簽。

    image

  2. 確認是Driver線程卡住還是Executor線程卡住

    • 如上圖樣本,可以看到Executor 59還有一個Active Tasks,說明此時還有一個Task未完成,因此點擊該Executor的Thread Dump查看該Executor的線程棧資訊。

    • 若Active Tasks數量均為0,說明此時Executor均處於空閑狀態,當前任務大機率卡在Driver執行邏輯,因此點擊Driver的Thread Dump查看Driver的線程棧資訊。

    • Driver的主線程通常如下:

      image

    • Executor執行線程通常如下:

      image