log4j filerotation在sparkYarn中不起作用

7gyucuyw  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(344)

我向拥有定制log4j属性的Yarn提交申请。自定义配置本身由驱动程序和执行程序识别和使用,日志循环部分除外(原木旋转本身工作良好(无Yarn)

Hadoop: 2.7.0
Spark : 3.1.1
OS: Windows10

spark提交:

./bin/spark-submit.cmd --class scala_spark.ScalaApp --master yarn --files "./myapp/log4j-test.properties" --conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=file:log4j-test.properties" --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file:log4j-test.properties" --deploy-mode cluster ./myapp/myApp.jar

log4j-test.properties属性:


# Set root logger level to DEBUG and its only appender to A1.

log4j.rootLogger=INFO, A1, my_file

log4j.logger.scala_spark=DEBUG

 # A1 Appender
log4j.appender.A1=org.apache.log4j.ConsoleAppender       
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# file Appender

log4j.appender.my_file=org.apache.log4j.FileAppender
log4j.appender.my_file.append=true
log4j.appender.my_file.file=./myApp.log
log4j.appender.my_file.threshold=INFO
log4j.appender.my_file.layout=org.apache.log4j.PatternLayout
log4j.appender.my_file.layout.ConversionPattern=%-5p %c: %m%n

结果:
$HADOOP_HOME\logs\userlogs\application_1617490627891_0001\container_1617490627891_0001_01_000001 只能找到stderr和stdout,但找不到myapp.log
注:
我100%确信log4j-test.properties是有效的,因为当我将rootlogger之类的东西更改为trace时,那些额外的跟踪、调试日志将出现在stdout中。如果我改为log4j.rootlogger=info,我的\文件,那么就不会有任何内容打印到stdout ofcz,但是myapp.log仍然不存在。
编辑:
我想可能是因为某些原因(比如权限问题)应用程序无法创建文件,但是在应用程序spark,yarn,hdfs日志中没有任何错误。

vcirk6k6

vcirk6k61#

解决方案:
我已将日志文件位置更改为:

log4j.appender.file_appender.file=${spark.yarn.app.container.log.dir}/myApp.log

如果您需要一个对适当位置的引用来将日志文件放在yarn中,以便yarn可以正确显示和聚合它们,请在log4j.properties中使用spark.yarn.app.container.log.dir
资料来源:https://spark.apache.org/docs/latest/running-on-yarn.html

相关问题