【发布时间】:2015-04-11 19:23:36
【问题描述】:
我正在构建一个 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
当我使用以下命令在本地运行我的 Spark 应用程序时:
spark-submit --class myModule.myClass --master local[2] --deploy-mode client myApp.jar
它运行良好,我可以看到日志消息已写入我本地文件系统上的/tmp/application.log。
但是当我通过 YARN 运行相同的应用程序时,例如
spark-submit --class myModule.myClass --master yarn-client --name "myModule" --total-executor-cores 1 --executor-memory 1g myApp.jar
或
spark-submit --class myModule.myClass --master yarn-cluster --name "myModule" --total-executor-cores 1 --executor-memory 1g myApp.jar
我在运行 YARN 的机器的本地文件系统上看不到任何 /tmp/application.log。
我错过了什么。
【问题讨论】:
-
我刚刚粘贴了你的 log4j.properties 部分并在本地运行它,但它没有为我的 /tmp 创建任何日志文件。我错过了什么吗?
-
我发现这篇文章很有用-stackoverflow.com/questions/27781187/…
标签: logging log4j apache-spark hadoop-yarn