【问题标题】:Best way to send apache-spark loggin to redis/logstash on an Amazon EMR cluster [closed]将 apache-spark 日志记录发送到 Amazon EMR 集群上的 redis/logstash 的最佳方式 [关闭]
【发布时间】:2017-12-12 22:10:06
【问题描述】:

我在 Amazon EMR 集群上触发提交作业。我希望将所有火花日志记录发送到 redis/logstash。在 EMR 下配置 spark 的正确方法是什么?

  • 保留 log4j:添加引导操作以修改 /home/hadoop/spark/conf/log4j.properties 以添加附加程序?然而,这个文件已经包含了很多东西,并且是一个指向 hadoop conf 文件的符号链接。我不想过多地摆弄它,因为它已经包含一些 rootLoggers。哪个 appender 做得最好? ryantenney/log4j-redis-appender + logstash/log4j-jsonevent-layout 或 pavlobaron/log4j2redis ?

  • 迁移到 slf4j+logback:从 spark-core 中排除 slf4j-log4j12,添加 log4j-over-slf4j ...并使用带有 com.cwbase.logback.RedisAppender 的 logback.xml?看起来这会对依赖项造成问题。它会隐藏 log4j.properties 中已经定义的 log4j.rootLoggers 吗?

  • 还有什么我错过的吗?

您对此有何看法?

更新

看起来我无法获得第二个工作选项。运行测试很好,但使用 spark-submit(使用 --conf spark.driver.userClassPathFirst=true)总是以可怕的“在类路径上检测到 log4j-over-slf4j.jar 和 slf4j-log4j12.jar ”结束,抢占 StackOverflowError。”

【问题讨论】:

  • 我正要走 log4j-over-slf4j 路线。我想你为我节省了一些时间。
  • 我认为没有办法解决它,因为它会与我们的 fat-jar 一起加载 spark 二进制文件,而 spark 使用 slf4j-log4j12。我今天一直在尝试各种事情来让它发挥作用,但没有成功。如果您仍然想试一试,请随时告诉我您的发现。
  • 有什么办法可以解决这个问题?像storm和spark这样的主要库都包含一个默认库。

标签: apache-spark log4j slf4j logback


【解决方案1】:

我会在集群上为此设置一个额外的守护进程。

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 2016-04-19
    • 2011-04-25
    • 1970-01-01
    相关资源
    最近更新 更多