寻找spark executor日志

本文将介绍spark on yarn模式下,怎样找到executor的日志。运行环境是基于HDP2.6.0.3-8版本。

引言

spark on yarn应用在运行时和完成后日志的存放位置是不同的,一般运行时是存放在各个运行节点,完成后会归集到hdfs。无论哪种情况,都可以通过spark的页面跳转找到executor的日志,但是在大多数的生产环境中,对端口的开放是有严格的限制,也就是说根本无法正常跳转到日志页面进行查看的,这种情况下,就需要通过后台查询。

运行时

spark on yarn模式下一个executor对应yarn的一个container,所以在executor的节点运行ps -ef|grep spark.yarn.app.container.log.dir,如果这个节点上可能运行多个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正常或者由于某种原因异常结束后,yarn默认会将所有日志归集到hdfs上,所以yarn也提供了一个查询已结束application日志的方法,即
yarn logs -applicationId application_1521424748238_0057,结果里面会包含所有executor的日志,可能会比较多,建议将结果重定向到一个文件再详细查看。

总结

无论对于spark应用程序的开发者还是运维人员,日志对于排查问题是至关重要的,所以本文介绍了找到日志的方法。

    原文作者:Woople
    原文地址: https://www.jianshu.com/p/6f3b901bd520
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞