本文將介紹spark on yarn模式下,怎樣找到executor的日志。運行環(huán)境是基于HDP2.6.0.3-8版本。
引言
spark on yarn應用在運行時和完成后日志的存放位置是不同的,一般運行時是存放在各個運行節(jié)點,完成后會歸集到hdfs。無論哪種情況,都可以通過spark的頁面跳轉找到executor的日志,但是在大多數(shù)的生產環(huán)境中,對端口的開放是有嚴格的限制,也就是說根本無法正常跳轉到日志頁面進行查看的,這種情況下,就需要通過后臺查詢。
運行時
spark on yarn模式下一個executor對應yarn的一個container,所以在executor的節(jié)點運行ps -ef|grep spark.yarn.app.container.log.dir,如果這個節(jié)點上可能運行多個application,那么再通過application id進一步過濾。上面的命令會查到executor的進程信息,并且包含了日志路徑,例如
-Djava.io.tmpdir=/data1/hadoop/yarn/local/usercache/ocdp/appcache/application_1521424748238_0051/container_e07_1521424748238_0051_01_000002/tmp '
-Dspark.history.ui.port=18080' '-Dspark.driver.port=59555'
-Dspark.yarn.app.container.log.dir=/data1/hadoop/yarn/log/application_1521424748238_0051/container_e07_1521424748238_0051_01_000002
也就是說這個executor的日志就在/data1/hadoop/yarn/log/application_1521424748238_0051/container_e07_1521424748238_0051_01_000002目錄里。至此,我們就找到了運行時的executor日志。
完成后
當這個application正?;蛘哂捎谀撤N原因異常結束后,yarn默認會將所有日志歸集到hdfs上,所以yarn也提供了一個查詢已結束application日志的方法,即
yarn logs -applicationId application_1521424748238_0057,結果里面會包含所有executor的日志,可能會比較多,建議將結果重定向到一個文件再詳細查看。
總結
無論對于spark應用程序的開發(fā)者還是運維人員,日志對于排查問題是至關重要的,所以本文介紹了找到日志的方法。