Spark Streaming 作业日志大小溢出
Spark streaming job log size overflow
我在集群模式下有 spark streaming (2.1) 作业 运行 并保持 运行 几周后作业被杀死(由资源管理器)的问题,因为 yarn 容器日志是导致磁盘被填满。
有没有办法避免这种情况?
我目前为日志大小设置了以下两个设置。然而,这对上述情况没有帮助。
spark.executor.logs.rolling.maxRetainedFiles 2
spark.executor.logs.rolling.maxSize107374182
谢谢!
Spark 生成大量 INFO 日志。因此,您可以添加以下行以避免记录不必要的 INFO 日志
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
Logger.getLogger("org").setLevel(Level.OFF);
最好的方法是为 spark 流作业创建新的 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
你忘了这个属性:
spark.executor.logs.rolling.strategy尺寸
我在集群模式下有 spark streaming (2.1) 作业 运行 并保持 运行 几周后作业被杀死(由资源管理器)的问题,因为 yarn 容器日志是导致磁盘被填满。 有没有办法避免这种情况?
我目前为日志大小设置了以下两个设置。然而,这对上述情况没有帮助。
spark.executor.logs.rolling.maxRetainedFiles 2 spark.executor.logs.rolling.maxSize107374182
谢谢!
Spark 生成大量 INFO 日志。因此,您可以添加以下行以避免记录不必要的 INFO 日志
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
Logger.getLogger("org").setLevel(Level.OFF);
最好的方法是为 spark 流作业创建新的 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
你忘了这个属性:
spark.executor.logs.rolling.strategy尺寸