spark的sparkUI如何解讀?
以spark2.1.4來做例子
Job - schedule mode
進入之后默認是進入spark job 頁面
這個說明有很詳細的解釋,spark有兩種操作算子:轉換算子(transformation)和執行算子(Action)。當執行到行為算子的時候,就出發了一個Job作業,比如count()和saveAsTextFile()。
sparkJob頁面頭部有幾個,最重要的是Schedule mode,表示的是Job的調度模型。如果多個線程調用多個並行的job,這些job就會被分配調用,這里就有個調度模型,一般是FIFO模型,先進先出模型。但是在spark0.8之后,就支持了一種FAIR模型,FAIR模型是一種公平模型,相當於每個任務輪換使用資源等,這樣能使的小job能很快執行,而不用等大job完成才執行了。
Job - Event Timeline
這個就是用來表示調度job何時啟動,何時結束,並且excutor何時加入。
我們可以很方便看到哪些job已經運行完成,使用了多少excutor,哪些正在運行。
點擊進入每個job,我們就可以看到每個job的detail
Details for Job
在這個頁面我們能看到job的詳情。一個job會被分為一個或者多個stage
這里也有event timeline,告訴我們這個job中每個stage執行時間。
這里多了一個DAG可視化的圖
DAG
DAG圖是有向無環圖的意思。spark中使用有向無環圖來顯示流程。
DAG也是一種調度模型,在spark的作業調度中,有很多作業存在依賴關系,所以有的作業可以並行執行,有的作業不能並行執行。把這些作業的內部轉向關系描繪清楚,就是一個DAG圖。使用DAG圖,就能很清晰看到我們的作業(RDD)哪些先執行,哪些后執行,哪些是並行執行的。
當調用了一個行為算子的時候,前面的所有轉換算子也會一並提交給DAG調度器,DAG調度器把這些算子操作分為不同的stage,這個就是stage的由來。而DAG在畫stage的時候也會產生出一個DAG圖,就是這里的圖了。
點擊每個stage,我們就能看到這個stage執行的任務(Task)了。
Details for Stage
標題
標題代表這是第幾號stage,第幾次嘗試。
Show Additional Metrics
Scheduler Delay
調度延遲時間,包含把任務從調度器輸送給excutor,並且把任務的結果從excutor返回給調度器。如果調度時間比較久,則考慮降低任務的數量,並且降低任務結果大小
Task Deserialization Time
反序列化excutor的任務,也包含讀取廣播任務的時間
Shuffle Read Blocked Time
任務shuffle時間,從遠端機器讀取shuffle數據的時間
Shuffle Remote Reads
從遠端機器讀取shuffle數據的時間
Getting Result Time
從worker中獲取結果的時間
// 這里應該還有一些其它的各種指標,等以后看代碼的時候再補充。
在用圖形表示完之后還有一個summary的時間統計,告訴你每個階段的時間,所有任務的分布圖。
Aggregated Metrics by Executor
這個矩陣告訴我們每個excutor的執行情況。
Tasks
告知每個任務的執行情況。
Environment
顯示所有的環境變量
Excutors
顯示每個excutor的統計情況
參考文章
http://www.csdn.net/article/2015-07-08/2825162
https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-webui-StagePage.html