全部產品
Search
文件中心

MaxCompute:作業診斷

更新時間:Feb 28, 2024

本文為您介紹如何通過作業日誌檢查作業是否已正常提交並執行。MaxCompute為Spark作業提供Logview工具以及Spark Web-UI,協助您診斷作業。

背景資訊

通過Spark-submit方式(DataWorks執行Spark任務時也會產生相應日誌)提交作業。

cd $SPARK_HOME
bin/spark-submit --master yarn-cluster --class  SparkPi /tmp/spark-2.x-demo/target/AliSpark-2.x-quickstart-1.0-SNAPSHOT-shaded.jar

作業提交成功後,MaxCompute會建立一個Instance,並在日誌中列印Instance的Logview和Tracking URL。

19/01/05 20:36:47 INFO YarnClientImplUtil: logview url: http://logview.odps.aliyun.com/logview/?h=http://service.cn.maxcompute.aliyun.com/api&p=qn_beijing&i=xxx&token=xxx
成功標準: <看到以下輸出,可能會有其他日誌一併輸出>
19/01/05 20:37:34 INFO Client:
   client token: N/A
   diagnostics: N/A
   ApplicationMaster host: 11.220.xxx.xxx
   ApplicationMaster RPC port: 30002
   queue: queue
   start time: 1546691807945
   final status: SUCCEEDED
   tracking URL: http://jobview.odps.aliyun.com/proxyview/jobview/?h=http://service.cn.maxcompute.aliyun-inc.com/api&p=project_name&i=xxx&t=spark&id=application_xxx&metaname=xxx&token=xxx

使用Logview工具診斷作業

logview.odps.aliyun.com開頭的URL,統稱為Logview。Logview是MaxCompute自研的分布式作業追蹤工具。該工具的功能如下:

  • 擷取作業的狀態。

  • 擷取作業各節點的啟停調度資訊。

  • 擷取作業各節點的標準輸入輸出日誌。Spark結果輸出建議列印到StdOut,Spark的log4j日誌則預設輸出到StdErr。

  • Logview的時效性為3~5天。當本地磁碟已滿時,StdOut和StdErr會被清理掉。

  1. 在瀏覽器中開啟日誌輸出的Logview,查看CUPID類型作業的運行情況。

    Logview

  2. 在Logview頁面,執行如下操作。

    1. 單擊Detail,查看作業的詳情。master-0代表Spark Driver所在節點。

    2. 單擊master-0並選擇All Tab,查看Spark Driver節點的具體資訊。

    3. 單擊StdOut,查看節點的結果輸出。

    4. 單擊StdErr,查看節點的log4j日誌。

使用Spark-Web-UI診斷作業

日誌輸出的Tracking URL,表示您的作業已經提交到MaxCompute叢集。Tracking URL是Spark Web-UI和HistoryServer的URL。該工具的功能如下:

  • 擷取原生Spark-Web-UI的所有資訊。

  • 作業運行時,此頁面顯示作業啟動並執行即時資訊。

  • 作業運行結束後,把事件從驅動傳遞到HistoryServer有1~3分鐘的延遲。作業運行結束後,立刻開啟Tracking URL時,可能會出現一個頁面,顯示Application application_1560240626712_2078769635 not found.錯誤。請稍後重試即可正常訪問。

  1. 在瀏覽器中開啟日誌輸出的Tracking URL,查看Spark作業的運行情況。

    Tracking URL

  2. 在Tracking URL頁面,執行如下操作。

    1. 單擊Environment,確認設定的Spark參數是否全部正確。

    2. 單擊Executors,查看是否有Dead節點,以及Spark Driver的StdOut和StdErr。

    3. 單擊Stdout,查看節點的結果輸出。

    4. 單擊Stderr,查看節點的log4j日誌。