首页 > 解决方案 > 如何配置 spark 和 log4j 以在 yarn 集群模式下登录本地文件系统

问题描述

我想将 spark 应用程序创建的日志消息收集到本地文件系统上的文件中。当我在客户端模式下运行应用程序时,我能够实现这一点,但是在集群模式下运行时我发现了困难。

我对 log4j 的配置:

# Root logger option
log4j.rootLogger=ERROR, stdout
# Direct log messages to 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 %m%n
#Direct log messages to a file
log4j.logger.com.bosch.bidos=INFO, file
log4j.additivity.com.bosch.bidos=false

log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=${user.home}/test.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %-5p: %c: %m%n

这是我的火花提交:

spark2-submit \
        --name test \
        --master yarn \
        --deploy-mode cluster \
        --class Main \
        --files path/to/test_log4j.properties \
        --conf spark.driver.extraJavaOptions="-Dlog4j.configuration=test_log4j.properties -Dlog4j.debug" \
        --conf spark.executor.extraJavaOptions="-Dlog4j.configuration=test_log4j.properties -Dlog4j.debug" \
        ${jar_path}

当我调试应用程序时,我可以看到,给定的 test_log4j.properties 文件被读取。

我错过了什么吗?

标签: apache-sparkconfigurationlog4jhadoop-yarn

解决方案


推荐阅读