Spark on Yarn任務執行的日誌收集
Spark on yarn
環境:基於CDH的大資料元件平臺。
yarn服務有resource manager和node manager組成,在yarn上執行的任務,由一個ApplicationMaster和多個container組成。
Spark 執行由一個driver和多個executor組成,Spark on Yarn時,Spark的driver和executor分別執行在yarn的container中。
在Spark任務執行過程中,我們時常需要檢視Spark的執行日誌,來定位問題,所以我們需要知道如何檢視Spark on Yarn的執行日誌。
日誌存放路徑
nodemanager存放container日誌的本地路徑
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/yarn/container-logs/</value>
</property>
container日誌在hdfs存放的路徑
<property> <description>Where to aggregate logs</description> <!-- hdfs路徑,container日誌在hdfs存放的路徑--> <name>yarn.nodemanager.remote-app-log-dir</name> <value>/tmp/logs</value> </property>
日誌檢視舉例
driver日誌與executer日誌
開啟driver -> stderr的日誌連結,可以看到所在yarn上的對應container日誌:
開啟executor -> stderr的日誌連結,可以看到對應container日誌:
container日誌的本地路徑
保留Spark stage執行歷史
Spark任務完成後,檢視執行歷史,可能會發現無法檢視history。這是由於Spark任務執行完之後,把stage相關的檔案刪除了。有引數可以控制任務執行完成後,stage檔案依舊被保留(在spark-env.sh中設定):
屬性名 |
說明 |
預設值 |
spark.yarn.applicationMaster.waitTries |
RM等待Spark AppMaster啟動次數,也就是SparkContext初始化次數。超過這個數值,啟動失敗。 |
10 |
spark.yarn.submit.file.replication |
應用程式上載到HDFS的檔案的複製因子 |
3 |
spark.yarn.preserve.staging.files |
設定為true,在job結束後,將stage相關的檔案保留而不是刪除。 |
false |
spark.yarn.scheduler.heartbeat.interval-ms |
Spark AppMaster傳送心跳資訊給YARN RM的時間間隔 |
5000 |
spark.yarn.max.executor.failures |
導致應用程式宣告失敗的最大executor失敗數 |
2倍於executor數 |
spark.yarn.historyServer.address |
Spark history server的地址(不要加http://)。這個地址會在應用程式完成後提交給YARN RM,使得將資訊從RM UI連線到history server UI上。 |
無 |