簡體   English   中英

Log4j 文件旋轉在火花紗中不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM