MaxCompute使用LogView查看Job信息

MaxCompute LogView

Logview是MaxCompute Job提交後查看和Debug任務的工具。通過Logview可看到一個Job的如下內容:

  • 任務的運行狀態。
  • 任務的運行結果。
  • 任務的細節和每個步驟的進度。

查看Job logview的方法

odpscmd客戶端命令

在使用odpscmd客戶端執行sql命令時,Job提交到MaxCompute後,會生成Logview的鏈接並顯示在job的詳細信息中,例如如下命令:

odps@ YITIAN_BJ_MC>select count(*) from emp;

ID = 20200427025937110gqciz3pr2
Log view:
http://logview.odps.aliyun.com/logview/?h=http://service.cn.maxcompute.aliyun.com/api&p=YITIAN_BJ_MC&i=20200427025937110gqciz3pr2&token=TlBGUWxpTllRKzRMYmJ2TXppM294aTgwR09rPSxPRFBTX09CTzoxNzUzODE0MzI4NjM0Mjk4LDE1ODg1NjExNzcseyJTdGF0ZW1lbnQiOlt7IkFjdGlvbiI6WyJvZHBzOlJlYWQiXSwiRWZmZWN0IjoiQWxsb3ciLCJSZXNvdXJjZSI6WyJhY3M6b2RwczoqOnByb2plY3RzL3lpdGlhbl9ial9tYy9pbnN0YW5jZXMvMjAyMDA0MjcwMjU5MzcxMTBncWNpejNwcjIiXX1dLCJWZXJzaW9uIjoiMSJ9
Job Queueing.
----------------------------------------------------------------------------------------------
                    STAGES        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  BACKUP
M1_job_0 .................    TERMINATED      1          1        0        0       0
R2_1_job_0 ...............    TERMINATED      1          1        0        0       0
----------------------------------------------------------------------------------------------
STAGES: 02/02    [==========================>>] 100%  ELAPSED TIME: 5.51 s     
----------------------------------------------------------------------------------------------
Summary:
resource cost: cpu 0.00 Core * Min, memory 0.00 GB * Min
inputs:
        yitian_bj_mc.emp: 14 (1721 bytes)
outputs:
Job run time: 0.000
Job run mode: service job
Job run engine: execution engine
...

可以直接在瀏覽器上打開Logview鏈接,進入查看Job的信息。例如這裏在瀏覽器中打開上面的logview地址:

MaxCompute Studio腳本執行

在使用MaxCompute Studio執行SQL語句時,沒有可視化的給出logview的地址,需要使用如下步驟進行查看。

1. 獲取SQL語句執行的Job實例ID(instanceid)。MaxCompute Studio執行完SQL語句後,會出現一個Job的執行頁面,其中包含了該instance的id,如下:

2. 使用wait instanceid;命令獲取該instance的詳細信息,其中包括該job實例的logview鏈接。在odpscmd中執行如下命令:

odps@ YITIAN_BJ_MC>wait 20200425123054590g4qg0tsa;

ID = 20200425123054590g4qg0tsa
Log view:
http://logview.odps.aliyun.com/logview/?h=http://service.cn.maxcompute.aliyun.com/api&p=YITIAN_BJ_MC&i=20200425123054590g4qg0tsa&token=QzNzdk4rUk4zZnlpQmxZQ2x0V1Q5N2wvMmlVPSxPRFBTX09CTzoxNzUzODE0MzI4NjM0Mjk4LDE1ODg0MjczMTMseyJTdGF0ZW1lbnQiOlt7IkFjdGlvbiI6WyJvZHBzOlJlYWQiXSwiRWZmZWN0IjoiQWxsb3ciLCJSZXNvdXJjZSI6WyJhY3M6b2RwczoqOnByb2plY3RzL3lpdGlhbl9ial9tYy9pbnN0YW5jZXMvMjAyMDA0MjUxMjMwNTQ1OTBnNHFnMHRzYSJdfV0sIlZlcnNpb24iOiIxIn0=
Job Queueing.
Summary:
resource cost: cpu 0.00 Core * Min, memory 0.00 GB * Min
inputs:
        yitian_bj_mc.maxcomputefee: 1996 (20833 bytes)
outputs:
Job run time: 0.000
Job run mode: service job
Job run engine: execution engine
...

同樣,可以在瀏覽器中直接打開上面的logview頁面,查看該job實例的運行情況:

Logview功能使用 

Logview功能組件

下面結合具體的Logview Web UI界面,介紹每個組件的含義。

Logview的首頁分成上下兩部分:

  • Instance信息
  • Task信息

Instance信息

在Logview頁面中,上半部分是提交的SQL任務對應的MaxCompute Instance信息,包含URL鏈接、項目、InstanceID、提交人、開始時間、結束時間和狀態(Status)等。

  • Instance信息部分,可以單擊Status查看當前隊列的Status詳細信息,包含四種狀態:
    • Waiting:說明當前作業正在MaxCompute中處理,並沒有提交到分佈式調度系統(Fuxi)中運行。
    • Waiting List : n:說明作業已提交至分佈式調度系統(Fuxi)排隊等待運行,當前在隊列中處於第n位。
    • Running:作業在分佈式調度系統(Fuxi)中運行。

說明 處於Terminated狀態的Instance由於作業已處理完成,因此不存在隊列信息。

  • 單擊Status查看隊列詳細信息:
    • Sub Status:表示當前子狀態信息。
    • WaitPos:表示排隊位置,如果是0表示正在運行,如果爲-表示尚未到Fuxi。
    • QueueLength:表示Fuxi中總的隊列長度。
    • Total Priority:表示作業運行時經過系統判斷後授予的優先級。
    • SubStatus History:單擊後,可以查看作業執行的詳細歷史狀態,包含狀態碼、狀態描述、開始時間、持續時間等(某些版本暫時無歷史信息)。

Task 信息

在Logview頁面中,下半部分爲該Instance對應的task信息,包括任務名稱、類型、狀態、運行結果(Result)、詳細信息(Detail)、開始時間、結束時間、總運行時間(Latency)、進度。其中,Latency指運行總共消耗的時間,與其他頁面的Latency含義類似。

Result:在Job運行結束後,可以看到運行結果。例如上面SQL的結果如下圖所示:

Detail:一個Job在運行中和結束後,均可以單擊Detail來查看任務運行的具體情況。

在MaxCompute Task詳細信息對話框中,可以查看以下信息:

  • 一個MaxCompute Task可以由一個或多個Fuxi Job組成。例如,如果提交的SQL任務較爲複雜,MaxCompute將自動向分佈式調度系統(Fuxi)提交多個Fuxi Job。
  • 每個Fuxi Job可以由一個或多個Fuxi Task組成。例如,簡單的MapReduce任務通常會產生兩個Fuxi Task,即Map Task(M1)和Reduce Task(R2)。而一個比較複雜的SQL任務也可能產生多個Fuxi Task。
  • 查看所產生的Fuxi Task的任務名稱。任務名稱一般由字母和數字組成,其中字母表示任務類型(例如,M代表Map Task),數字標識任務編號以及依賴關係(例如,R5_4表示該Reduce Task需要J4任務執行結束後纔會開始執行;J4_1_2_3則表示該Join Task需要M1、M2、M3這三個任務都執行完成後纔會開始執行)。
  • I/O Records表示這個task的輸入和輸出的records數。

單擊Fuxi Task最右側的查看列中的按鈕或雙擊該Fuxi Task,可以查看該Fuxi Task對應的Instance信息。說明:每個Fuxi Task由一個或多個Fuxi Instance組成。當Fuxi Task的輸入數據量持續增大時,MaxCompute將自動爲該Task啓動更多的節點來處理數據,每個節點即對應一個Fuxi Instance。

在頁面下方的Fuxi Instance信息部分,Logview將處於不同階段的Instance進行分組展示。例如,可以選擇Failed組,查看運行出錯的節點。同時,可以單擊StdOut和StdErr列中的按鈕查看標準輸出信息和標準錯誤信息。說明:在所提交的MaxCompute任務中編寫的打印信息也將在標準輸出信息和標準錯誤信息中展示。

使用Logview排查問題

出錯的任務

當有任務出錯時,可以在Logview頁面的Result中看到錯誤的提示信息,也可以在Detail頁面中通過Fuxi Instance的stderr,查看具體某個Instance出錯的信息。

數據傾斜

運行緩慢有時是由於在某個Fuxi Task的所有Fuxi Instance中,有個別Instance形成長尾造成的。長尾的現象由同一個Task內任務分配不均導致。這時可以在任務運行完後,在Summay標籤頁中看運行結果。在每個Task中都可以看到如下輸出:

output records:
R2_1_Stg1: 199998999  (min: 22552459, max: 177446540, avg: 99999499)

此處如果min和max值相差較大,不在一個數量級,說明在這一階段出現了數據傾斜。例如在執行字段Join時,某個字段中有一個值出現的比例很高,則在這一字段上執行Join就會出現數據傾斜。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章