概述
X-Pack Spark目前是通過Yarn管理資源。在送出Spark 任務後我們經常需要知道任務的運作狀況,例如任務失敗了在哪裡看日志、怎麼檢視每個Executor的運作狀态、每個task的運作狀态,性能瓶頸點在哪裡等資訊。
本文主要介紹如何使用X-Pack Spark的Yarn UI 和Spark Job UI來擷取上述的資訊。
Yarn 基礎知識介紹
Yarn 是hadoop體系中的一個資源管理和排程的元件。網上搜尋Spark on Yarn有很多學習資料,這裡隻做簡單入門級介紹:Spark作業的運作是向Yarn送出一個任務,Yarn拿到任務後配置設定、排程資源,然後調研Spark叢集跑任務。過程如下圖所示:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLlRmNyMDNxgTOhVTMhFjM4kTMwgzMhFzYiZjZxEDNiFmZzUDOxIGO18CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
關于Yarn的官網資料可參考:
Apache Hadoop Yarn。
X-Pack Spark 作業管理連結介紹
X-Pack Spark提供了作業管理,可以送出Spark任務(背景邏輯是送出到Yarn,Yarn再排程Spark叢集)。任務運作的狀态有如下幾個連結:
如上圖有四個連結:日志,Spark UI,Yarn UI,詳情,停止。
-
日志
這裡的日志點進去是控制台送出任務的日志,對應背景Livy的日志。主要顯示Livy 與 Spark交換的日志。
-
Spark UI
Spark UI是Spark job 運作的詳細資訊,下面會詳細介紹。
-
Yarn UI
Yarn UI 點選進去是Yarn的管理界面,下面會詳細介紹。
-
詳情
任務送出的參數詳情
-
停止
點選可以停止此次任務。
常用的就是Spark UI 和 Yarn UI, 通過Yarn UI 和 Spark UI 可以檢視Spark 運作的日志,包括Driver的日志和Executor的日志。具體的使用方法下面詳情介紹。
Yarn UI的介紹
Yarn UI入口
X-Pack Yarn UI入口有兩個。
1、從X-Pack Spark叢集明細界面入口。如下圖,點選“YARN”,進入Yarn UI。
注意:請先閱讀“UI通路說明”
2、從“作業管理”中每個作業的運作結果狀态顯示欄入口。如下圖:
注意:請先閱讀上圖的“UI通路說明”
Yarn UI功能介紹
進入YarnUI後可以看到如下的界面:
界面主要分三個區域。區域1:導航欄;區域2:叢集的統計資訊;區域3:Spark任務的運作狀态區域。
下面分别介紹這3個區域。
區域1:導航欄,點選不同的連結右邊的區域會重新整理。
這裡主要介紹“Applications”。
Applications:所有送出的Spark任務清單。例如通過“作業管理”、“工作流”、“互動式查詢”送出的任務都會在這裡顯示。
Applications-RUNNING:正在運作的Spark任務。點選後會顯示任務清單中“State”是“RUNNING”的任務清單。例如下圖:
Applications-FINISHED:運作結束的Spark任務。點選後會顯示任務清單中“State”是“FINISHED”的任務清單。
Applications-FAILED:運作失敗的Spark任務。點選後會顯示任務清單中“State”是“FAILED”的任務清單。
區域2:叢集的統計資訊,主要顯示叢集的統計資訊。
常用資訊說明如下:
名稱 | 說明 |
---|---|
Memory Total | 叢集總可用記憶體。 |
Memory Used | 叢集已經使用的記憶體。 |
VCores Total | 叢集總可用的虛拟cpu core個數。送出spark任務指定的“--driver-cores”和“--executor-cores”使用的資料就是對應這裡的VCores |
VCores Used | 叢集總已經使用的虛拟cpu core個數。 |
Active Nodes | 可用的節點。節點是具有記憶體Memory和Vcores資源的機關,一個Nodes中會有若幹Memory和Vcores。點選下面的數字會顯示每個節點的Memory和Vcores的使用情況。 |
Decommissioned Nodes、Lost Nodes、Unhealthy Nodes | 可能出現問題的Nodes。 |
下面看下點選“Active Nodes”下面的數字後展示的資訊。
如上圖,點選數字後顯示如下資訊:
如上圖紅色區域展示了“Active Nodes”的資訊,例如節點狀态、多少可用的記憶體、多少可用的VCores等。
節點已經使用的記憶體。 | |
Memory Avail | 節點可用的記憶體。如果Spark 任務一直不能起來,可以先到這裡看看是否可用記憶體不足。 |
節點已使用的虛拟cpu core個數。送出spark任務指定的“--driver-cores”和“--executor-cores”使用的資料就是對應這裡的VCores | |
VCores Avail | 節點可用的Vcores。如果Spark 任務一直不能起來,可以先到這裡看看是否可用Vcores不足。 |
區域3:Spark任務的運作狀态區域,顯示每個Spark任務的運作資訊,例如,開始時間、結束時間、狀态等資訊。
ID | 每個Spark任務都會有一個唯一辨別的ID。 |
Name | 送出Spark任務的名稱。對應控制台送出指令中的“--name” 資訊。 |
State | Spark任務運作的狀态,例如RUNNING/FINISHED/FAILED/SUCCEEDED等。 |
Tracking UI | Spark UI的連結,點選ApplicationMaster可以進入Spark UI。注意:隻有State為RUNING的Spark任務才能進入Spark UI。 |
Spark UI 介紹
Spark UI入口
Spark UI入口有兩個。
1、從Yarn UI進入。
如下圖,進入Yarn UI後點選“RUNNING” 檢視Spark任務清單。
注意:隻有State為RUNING的Spark任務才能進入Spark UI。
Spark UI功能介紹
下圖是Spark UI的首頁,分兩個區域。導航欄和資訊顯示欄。
導航欄
導航欄常用資訊說明:
Jobs | 顯示所有的Spark 任務的Job運作狀态。 |
Stages | 顯示所有的Spark 任務的Job的Stages運作狀态。 |
Environment | Spark叢集的配置資訊。 |
Executors | Spark叢集的Executors狀态資訊。 |
Streaming | Spark叢集的Streming任務的統計資訊。 |
SQL | Spark叢集的SQL運作狀态資訊。 |
下面分别介紹每個導航欄的用途。
Jobs頁面如下:
常用資訊說明:
Active Jobs | 正在運作的Job。 |
Completed Jobs | 已經運作結束的Job。 |
Duration | Job運作的時間,可以檢視下Job運作的性能。 |
Submitted | Job送出的時間。 |
Stages: Succeeded/Total | 此job對應的所有Stages的總數和運作成功的個數。 |
Tasks (for all stages): Succeeded/Total | 此job對應的所有的stages的task總數和運作的成功的個數。“1 running”表示有1個task正在運作,正在運作的task個數表示job運作并行度,一般情況下提高task的運作個數可提高Job的執行性能。 |
Stages頁面如下:
:
Stages 頁面的是展示Job的所有Stages資訊的頁面,Stages的詳細資訊比Jobs多出幾個常用的資訊如下,這幾個資訊常可用來分析Spark 任務的性能。
Input | Stage輸入的資料量。 |
Output | Stage輸出的資料量。 |
Shuffle Read | Stage Shuffle 輸入的資料量。 |
Shuffle Write | Stage Shuffle 輸出的資料量。 |
另外點選Stage的“Description”可以進入Stage的tasks運作明細,下圖是Stage的task運作明細:
Tasks運作明細是在調試程式、分析任務性能的常用資訊。這裡可以看到每個task的運作時間、GC多少、運作狀态等資訊。
Task的執行時間,用于評估task的性能。 | |
GC Time | Task的GC時間。如果GC時間過長,會影響task的運作性能,這時可以增加Executor的記憶體:在送出指令中增加--executor-memory的值,或者減少task的并行度:在送出指令中減少--executor-cores的值 |
Errors | Task的錯誤資訊。如果task執行失敗,部分的錯誤資訊會顯示在這裡。全部的錯誤資訊要點選“Host”一欄中的“stderr”日志。 |
Environment主要展示Runtime Information、Spark Properties、System Properties、Classpath Entries。這裡不做詳細介紹。
Executors頁面如下:
Summary | 顯示Executor的總體運作狀态。Active、Dead的個數 |
Logs | Driver日志 和 Executor 日志的入口,點選可以檢視對應的stdout和stderr日志。stdout:代碼中使用print指令打出的資訊會顯示在這個日志中。stderr:系統産出的日志資訊會顯示在這個日志中。 |
Streaming頁面如下主要分兩塊:
Streaming Statistics:統計Streming的資料輸入量、Streming的處理時間和時延。如下圖:
Streming每個批次的運作狀況,便于分析每個批次的性能。如下圖:
Batch Time | 批次産生的時間。 |
Records | 批次擷取到的資料量。 |
Scheduling Delay | 批次開始處理的時延。 |
Processing Time | 批次處理的時間。 |
Total Delay | 批次處理完畢的總時延。 |
SQL 頁面主要顯示每個SQL任務資訊,主要可以用于SQL的執行計劃的檢視。例如點選SQL頁面的“Description”資訊可以看到對應SQL的執行計劃。如下圖:
其它的這裡不做詳細介紹。
小結
本文隻對Yarn UI和Spark UI的進行簡單的介紹,其它更詳細資訊可以參考:
社群資料X-Pack Spark平台使用可參考:
X-Pack Spark