Spark流式传输作业日志大小溢出

时间:2018-05-08 01:33:33

标签: apache-spark spark-streaming

我有以群集模式运行的spark streaming(2.1)作业,并且在几周之后继续遇到作业被资源管理器杀死的问题,因为纱线容器日志导致磁盘被填满。 有没有办法避免这种情况?

我目前为日志大小设置了以下两个设置。然而,这对上述情况没有帮助。

spark.executor.logs.rolling.maxRetainedFiles 2 spark.executor.logs.rolling.maxSize 107374182

谢谢!

3 个答案:

答案 0 :(得分:1)

最好的方法是为火花流作业创建新的log4j属性,而不是控制台Appender使用File appender来汇总文件大小,文件数。您可以创建 /etc/spark/conf/spark-stream-log4j.properties ,如下所示

log4j.rootCategory=INFO, filerolling

log4j.appender.filerolling=org.apache.log4j.filerollingFileAppender
log4j.appender.filerolling.layout=org.apache.log4j.PatternLayout
log4j.appender.filerolling.layout.conversionPattern=[%d] %p %m (%c)%n
log4j.appender.filerolling.maxFileSize=3MB
log4j.appender.filerolling.maxBackupIndex=15
log4j.appender.filerolling.file=/var/log/hadoop-yarn/containers/spark.log

log4j.appender.filerolling.encoding=UTF-8

## To minimize the logs
log4j.logger.org.apache.spark=ERROR
log4j.logger.com.datastax=ERROR
log4j.logger.org.apache.hadoop=ERROR
log4j.logger.hive=ERROR
log4j.logger.org.apache.hadoop.hive=ERROR
log4j.logger.org.spark_project.jetty.server.HttpChannel=ERROR
log4j.logger.org.spark_project.jetty.servlet.ServletHandler=ERROR
log4j.org.apache.kafka=INFO

Spark提交命令,如

spark-submit  --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=spark-stream-log4j.properties  -XX:+UseConcMarkSweepGC -XX:OnOutOfMemoryError='kill -9 %p'"   --conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=spark-stream-log4j.properties -XX:+UseConcMarkSweepGC  -XX:OnOutOfMemoryError='kill -9 %p'"  --files /etc/spark/conf/spark-stream-log4j.properties 

答案 1 :(得分:0)

Spark会生成大量INFO日志。因此,您可以添加以下行以避免记录不必要的INFO日志

import org.apache.log4j.Level;
import org.apache.log4j.Logger;

Logger.getLogger("org").setLevel(Level.OFF);

答案 2 :(得分:0)

您忘记了此属性:

spark.executor.logs.rolling.strategy大小