Scala Spark Streaming Standalone:保存日志
我正在运行一个独立安装的spark流媒体应用程序(版本1.6.1)。当我使用spark submit运行应用程序时,终端上会显示日志。例如,如果应用程序失败了,这些信息在以后很有用,可以用来理解应用程序失败的原因Scala Spark Streaming Standalone:保存日志,scala,logging,apache-spark,spark-streaming,Scala,Logging,Apache Spark,Spark Streaming,我正在运行一个独立安装的spark流媒体应用程序(版本1.6.1)。当我使用spark submit运行应用程序时,终端上会显示日志。例如,如果应用程序失败了,这些信息在以后很有用,可以用来理解应用程序失败的原因 根据我对文档的阅读,我将spark.eventLog.enabled标志设置为true。但是,这仅将事件日志保存到tmp/spark events文件夹。在我看来,这些日志对我没有多大用处。由于许多例外,我的工作经常失败。存储终端中显示的这些日志(我猜是驱动程序日志?)并分析我的异常的
根据我对文档的阅读,我将
spark.eventLog.enabled
标志设置为true。但是,这仅将事件日志保存到tmp/spark events文件夹。在我看来,这些日志对我没有多大用处。由于许多例外,我的工作经常失败。存储终端中显示的这些日志(我猜是驱动程序日志?)并分析我的异常的正确方法是什么?如果您只想记录在驱动程序端发生的事件,最简单的方法是为spark提供日志配置文件。默认情况下,spark使用log4j进行日志记录,因此在启动spark提交作业时,您可以使用spark.driver.extraJavaOptions
标志传入log4j配置,并向其添加RollingFileAppender
:
spark.driver.extraJavaOptions=-Dlog4j.configuration=/path/to/your/log4j.xml
这是log4j-1.2滚动appender xml的基本模式:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="100KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<logger name="log4j.rootLogger" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="RollingFileAppender"/>
</logger>
</log4j:configuration>
spark文档的第节
如果您还想记录在驱动程序节点上发生的事件,那么我建议您研究一种可以从分布式系统收集日志的外部服务。我在SPARK_HOME/conf/log4j.properties中添加了这些行
log4j.rootLogger=ERROR, file
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
可以使用任何log4j appender。我在这里使用文件appender
还有,stdout日志丢失了。仅保存stderr日志。尚不清楚原因。谢谢您的回复!我还没有机会测试这个。我刚试过这个,得到了很多log4j:WARN语句,结尾是:“……log4j:ERROR找不到名为[FILE]的appender。使用Spark的默认log4j配置文件:org/apache/Spark/log4j defaults.properties'
@Aswin修复了它。应该是“RollingFileAppender”。谢谢,但我仍然收到错误日志。知道为什么会这样吗?我已将日志添加到问题的编辑部分。@Aswin由于某种原因,找不到rolefileppender
类。也许您希望通过spark.driver.extraClassPath