Spark做爲計算引擎天天承載了大量的計算任務,爲了監控集羣的資源使用狀況,對spark的監控也在所不免,Spark的監控有3個入口,1. Rest; 2.另外一個是Metrics; 3. Log。html
參考spark的rest接口文檔apache
http://spark.apache.org/docs/latest/monitoring.htmljvm
spark支持把每一個計算實例的執行信息寫到hdfs,而後經過historyserver或者本身去hdfs上找到文件解析出來。數據包括spark執行關鍵點,job,stage,task,數據種類上大體和MapReduce收集的內容差很少,主要是jvm,資源,shuffle,io這四個方面。spa
默認狀況spark不打開metrics,也就是沒有metrics數據,能夠看配置conf/metrics.properties,默認都是被註釋掉的。Spark內置了多種metrics的sink方式,控制檯,csv,slf4j等。rest
案例日誌
打開基於控制檯的metrics sink。如圖1,將3個配置的註釋去掉,將metrics信息每過10s打印到控制檯上。如圖2,spark會將內存信息,job調度信息以及其餘一些信息打印出來。server
圖1htm
圖2blog
Spark在on yarn模式下,日誌由yarn統一管理,通常狀況,咱們會選擇把yarn的日誌聚合功能打開,spark的日誌也會跟着上傳到hdfs上,這樣本身去解析日誌也會很容易。若是想要經過日誌來監控spark任務執行狀況,那麼可能會須要業務層面的埋點,不然只能針對一些異常平常進行監測。接口
Spark因爲自己只是計算執行引擎,沒有常駐進程(history server不算),因此在監控層面相對比較靈活,可是也有複雜的地方。當天天有成千上萬個spark任務提交到集羣執行的時候,那麼須要監控的數據量就上來了,粒度越細,監控的壓力越大。