V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wudc
V2EX  ›  程序员

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

  •  
  •   wudc · 2017-12-29 16:40:37 +08:00 · 3286 次点击
    这是一个创建于 2307 天前的主题,其中的信息可能已经有所发展或是发生改变。
    写好了一个 spark job,用 crontab 定时跑,但是 spark 的 console 输出信息无法保存,后来在程序中用 log4j 打印日志,但是在集群中运行的程序 日志存放位置不太好整,就想着要不就存放到 hdfs,但是没有查到这方面的实现方法,在这里请各位帮忙指点。谢谢。
    3 条回复    2017-12-31 22:43:13 +08:00
    billlee
        1
    billlee  
       2017-12-29 20:18:59 +08:00
    history server
    kex0916
        2
    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
        3
    wudc  
    OP
       2017-12-31 22:43:13 +08:00
    @kex0916 是我之前了解不深,听你这么说又去查了下,终于明白了,提交的时候 master 设置为 yarn-client 就可以了,谢谢。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5406 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 01:30 · PVG 09:30 · LAX 18:30 · JFK 21:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.