在Amazon EMR集群上发送apache-spark登录到redis/logstash的最佳方式



我在Amazon EMR集群上spark-submit作业。我想所有的火花日志被发送到redis/logstash。在EMR下配置spark的正确方法是什么?

  • Keep log4j:添加一个bootstrap动作来修改/home/hadoop/spark/conf/log4j.属性来添加追加器?然而,这个文件已经包含了很多东西,并且是hadoop配置文件的符号链接。我不想过多地摆弄它,因为它已经包含了一些rootlogger。哪个appender做得最好?ryantenney/log4j- redisr -appender + logstash/log4j-jsonevent-layout OR pavlobaron/log4j2redis

  • 迁移到slf4j+logback:从spark-core中排除slf4j-log4j12,添加log4j-over-slf4j…并使用logback.xml与com.cwbase.logback.RedisAppender?看起来这将是有问题的依赖关系。它会隐藏log4j吗?rootlogger已经在log4j.properties中定义?

  • 还有什么我错过的吗?

你对此有何看法?

看来我没有第二个选择了。运行测试很好,但使用spark-submit (with——conf spark.driver.userClassPathFirst=true)总是以可怕的"检测到log4j-over-slf4j.jar和slf4j-log4j12.jar在类路径上,抢占StackOverflowError"结束。

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

最新更新