yarn模式下調(diào)試運行中的spark作業(yè)
在yarn模式下,spark作業(yè)運行相關(guān)的executor和ApplicationMaster都是運行在yarn的container中的
一個作業(yè)運行完了以后帖族,yarn有兩種方式來處理spark作業(yè)打印出的日志
第一種是聚合日志方式(推薦帆疟,比較常用)
這種方式的話辑畦,顧名思義,就是說,將散落在集群中各個機器上的日志啄骇,最后都給聚合起來宵蛀,讓我們可以統(tǒng)一查看
如果打開了日志聚合的選項昆著,即yarn.log-aggregation-enable,container的日志會拷貝到hdfs上去术陶,并從機器中刪除
對于這種情況凑懂,可以使用yarn logs -applicationId <app ID>命令,來查看日志
yarn logs命令梧宫,會打印出application對應(yīng)的所有container的日志出來接谨,當然,因為日志是在hdfs上的塘匣,我們自然也可以通過hdfs的命令行來直接從hdfs中查看日志
日志在hdfs中的目錄脓豪,可以通過查看yarn.nodemanager.remote-app-log-dir和yarn.nodemanager.remote-app-log-dir-suffix屬性來獲知
第二種 web ui(如果你有精力的話,可以去配一下)
日志也可以通過spark web ui來查看executor的輸出日志
但是此時需要啟動History Server忌卤,需要讓spark history server和mapreduce history server運行著
并且在yarn-site.xml文件中扫夜,配置yarn.log.server.url屬性
spark history server web ui中的log url,會將你重定向到mapreduce history server上,去查看日志
第三種 分散查看(通常不推薦)
如果沒有打開聚合日志選項笤闯,那么日志默認就是散落在各個機器上的本次磁盤目錄中的堕阔,在YARN_APP_LOGS_DIR目錄下
根據(jù)hadoop版本的不同,通常在/tmp/logs目錄下颗味,或者$HADOOP_HOME/logs/userlogs目錄下
如果你要查看某個container的日志超陆,那么就得登錄到那臺機器上去,然后到指定的目錄下去脱衙,找到那個日志文件侥猬,然后才能查看