相关疑难解决方法(0)

如何使用log4j将日志记录到在YARN上运行的Spark应用程序内的本地文件系统?

我正在构建Apache Spark Streaming应用程序,并且在YARN上运行它时无法使其登录到本地文件系统上的文件.怎么能实现这个?

我已经设置了log4.properties文件,以便它可以成功写入/tmp本地文件系统目录中的日志文件(部分如下所示):

log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=/tmp/application.log
log4j.appender.file.append=false
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Run Code Online (Sandbox Code Playgroud)

当我使用以下命令在本地运行我的Spark应用程序时:

spark-submit --class myModule.myClass --master local[2] --deploy-mode client myApp.jar
Run Code Online (Sandbox Code Playgroud)

它运行正常,我可以看到日志消息写入/tmp/application.log我的本地文件系统.

但是,当我通过YARN运行相同的应用程序时,例如

spark-submit --class myModule.myClass --master yarn-client  --name "myModule" --total-executor-cores 1 --executor-memory 1g myApp.jar
Run Code Online (Sandbox Code Playgroud)

要么

spark-submit --class myModule.myClass --master yarn-cluster  --name "myModule" --total-executor-cores 1 --executor-memory 1g myApp.jar
Run Code Online (Sandbox Code Playgroud)

/tmp/application.log在运行YARN的机器的本地文件系统上看不到任何内容.

我错过了什么

logging log4j hadoop-yarn apache-spark

31
推荐指数
2
解决办法
6万
查看次数

标签 统计

apache-spark ×1

hadoop-yarn ×1

log4j ×1

logging ×1