【问题标题】:How to customize Log4j properties file in YARN如何在 YARN 中自定义 Log4j 属性文件
【发布时间】:2017-02-13 13:49:43
【问题描述】:

我在 Spark 集群中的 YARN 上运行应用程序,但我需要设置自己的创建日志文件的路径,并且需要更改日志消息的格式。为此,我想使用我自定义的 Log4j.properties 文件而不是 YARN 提供的默认 log4j.properties 文件。如何做到这一点?

【问题讨论】:

  • 在 log4j 文件中添加 log4j.appender.file.File=/tmp/application.log 属性并检查。
  • 这不会解决我的问题,因为通过在默认 log4j.properties 文件中进行修改,其他应用程序的日志文件也会受到影响,因为它们将引用默认的 .properties 文件。相反,我想使用我自己定制的 .properties 文件并在几个特定的​​应用程序中使用它。如何做到这一点?
  • 创建您自己的 log4j 属性文件并在您的 spark 类路径中添加属性文件。

标签: logging apache-spark log4j hadoop-yarn


【解决方案1】:

我使用这个 spark-submit 脚本将我的 log4j.properties 推送到 Yarn,以便我可以控制日志记录模式。我特别想要完整的包名,这样我就可以从生成的 Yarn 应用程序日志中找出我的类在哪里记录。

spark-submit \
    --class com.acme.Main \
    --master yarn \
    --deploy-mode cluster \
    --driver-memory 2g \
    --executor-memory 1g \
    --driver-class-path "./conf" \
    --files "./conf/app.properties,./conf/log4j.properties" \
    ./lib/my-app-uber.jar \
    "$@"

就我个人而言,我只使用ConsoleAppender,并且我的所有应用程序日志都出现在标准 Yarn 日志中以及其他所有内容。您不能将RollingFileAppender 与 HDFS 一起使用。

log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} - %-5p %c:%L -> %m%n

你应该在

中看到你的结果
yarn logs -applicationId <your-app-id>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    相关资源
    最近更新 更多