提交到 yarn 上的 spark 程序中的 log4j 信息怎么保存到 hdfs 某个目录?

2017-12-29 16:40:37 +08:00
 wudc
写好了一个 spark job,用 crontab 定时跑,但是 spark 的 console 输出信息无法保存,后来在程序中用 log4j 打印日志,但是在集群中运行的程序 日志存放位置不太好整,就想着要不就存放到 hdfs,但是没有查到这方面的实现方法,在这里请各位帮忙指点。谢谢。
3431 次点击
所在节点    程序员
3 条回复
billlee
2017-12-29 20:18:59 +08:00
history server
kex0916
2017-12-29 21:05:54 +08:00
spark 的日志可以分为 driver 端和 executor 端的日志,你说的 spark 的 console 输出应该主要指的是 yarn client 模式吧
executor 端日志由于你本身是在 yarn 上执行的,可以配置 yarn.log-aggregation-enable=true 来开启日志聚合,这个功能会把 container 的日志收集到 hdfs 上,开启后可以通过 yarn logs -applicationId 命令来获取 yarn 应用的日志,也就能得到 spark on yarn 应用的 executor 端日志
driver 端日志(这里主要是 yarn client 模式)可以定制 HdfsAppender 在 log4j 里配置该 appender 可以保存到 hdfs。
另外可以配置 history server 里面可以看到已经执行应用的信息
更专业点可以考虑用 flume 来收集日志
wudc
2017-12-31 22:43:13 +08:00
@kex0916 是我之前了解不深,听你这么说又去查了下,终于明白了,提交的时候 master 设置为 yarn-client 就可以了,谢谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/418654

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX