写好了一个 spark job,用 crontab 定时跑,但是 spark 的 console 输出信息无法保存,后来在程序中用 log4j 打印日志,但是在集群中运行的程序 日志存放位置不太好整,就想着要不就存放到 hdfs,但是没有查到这方面的实现方法,在这里请各位帮忙指点。谢谢。
1
billlee Dec 29, 2017
history server
|
2
kex0916 Dec 29, 2017
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 来收集日志 |