1. 程式人生 > >Spark on Yarn任務執行的日誌收集

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上。