[英]Log4j filerotation doesn't work in spark-yarn
我使用自定义 log4j 属性将我的申请提交给 yarn。 除了日志轮换部分之外,驱动程序和执行程序都可以识别和使用自定义配置本身。 (日志旋转本身在没有纱线的情况下也能很好地工作)
Hadoop: 2.7.0
Spark : 3.1.1
OS: Windows10
火花提交:
./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 时,那些额外的 TRACE、DEBUG 日志将出现在标准输出中。 如果我更改为 log4j.rootLogger=INFO, my_file,那么 stdout ofcz 将不会打印任何内容,但 myApp.log 仍然无处可去。
编辑:
我想也许应用程序由于某种原因(如权限问题)无法创建文件,但应用程序、火花、纱线、hdfs 日志中根本没有错误。
解决方案:
我将日志文件位置更改为:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.