【问题标题】:Spark streaming job log size overflowSpark 流式传输作业日志大小溢出
【发布时间】:2018-10-17 20:55:35
【问题描述】:

我有 Spark Streaming (2.1) 作业在集群模式下运行,并在几周后一直遇到作业被终止(由资源管理器)的问题,因为纱线容器日志导致磁盘被填满。 有没有办法避免这种情况?

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

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

谢谢!

【问题讨论】:

    标签: apache-spark spark-streaming


    【解决方案1】:

    最好的方法是为 spark 流作业创建新的 log4j 属性,而不是使用控制台 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 
    

    【讨论】:

      【解决方案2】:

      你忘记了这个属性:

      spark.executor.logs.rolling.strategy 大小

      【讨论】:

        【解决方案3】:

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

        import org.apache.log4j.Level;
        import org.apache.log4j.Logger;
        
        Logger.getLogger("org").setLevel(Level.OFF);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-03-01
          • 2021-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多