zoukankan      html  css  js  c++  java
  • 解决spark日志清理问题

    背景

    由于采用了sparkstreaming 任务一直再运行导致日志文件暴涨,达到了硬盘的预警,不得已必须指定策略定期删除日志已保证服务器硬盘空间。

    spark的日志分类

    spark的日志都有那些:

    1.event(history)

    2.work

    3.executor

    解决方法

    方案1

    一开始为了快速实现日志清理,选择了脚本自动清理,写了shell脚本便于清理历史文件,但是会有很多细节甚至有些文件不能删除(由于进程占用),这里不做详细介绍了。

    方案2

    spark配置来解决这几个问题

    conf文件下面的两个文件中修改配置:

    1.解决executor(work目录) 日志太大的问题,修改spark-defaut.conf

    # 日志循环复写的策略(一般就是size和time)这里受限于空间选择了大小
    spark.executor.logs.rolling.strategy size
    # 设定复写的大小,这里设定了1G spark.executor.logs.rolling.maxSize
    1073741824
    # 设定组大保留文件
    spark.executor.logs.rolling.maxRetainedFiles 100
    # 设定更新周期这里选择一小时检查一次是否超过最大值
    spark.executor.logs.rolling.time.interval hourly

    2.解决历史日志问题spark-env.sh 文件添加 历史日志清洗参数配置

    export SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=/export/opt/spark/spark2.4.0/logs -Dspark.history.fs.cleaner.enabled=true -Dspark.history.fs.cleaner.interval=1d -Dspark.history.fs.cleaner.maxAge=2d -Dspark.history.retainedApplications=100"

    3.woker日志清理同上文件

    export SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.interval=1800 -Dspark.worker.cleanup.appDataTtl=86400"

    方案3

    log4j 替代默认的日志记录,再shell的提交脚本中加入如下参数

    --files "./log4j.properties" 
    --driver-java-options "-Dlog4j.debug=true -Dlog4j.configuration=log4j.properties" 
    --conf spark.driver.extraJavaOptions='-Dlog4j.configuration=file:/opt/spark/conf/log4j.properties' 

    总结

      再实际应用过程中依然有很多不能日志复写或者不能文件导致日志太大的问题,需要具体问题具体解决。比如spark3.0 才支持history日志循环写。另外yarn模式和standalone 也有很多不同,需要区别处理。

  • 相关阅读:
    MySQL 替换和截取指定位置字符串
    notepad++安装XML格式化插件
    个人信用报告,长啥样?怎么查?
    MySQL 查询decimal字段去除自动补零
    mapstruct使用详解
    电商物流行业中的RDC、FDC和TDC分别表示什么意思?发网详解
    借助Proxifier实现内网访问
    C++源码流程图分析!
    FFmpeg中AVPacket处理函数av_free_packet()和av_packet_free()的区别以及用法
    fopen 和它的读写标识 r、r+、rb+、rt+、w+.....
  • 原文地址:https://www.cnblogs.com/wenBlog/p/14001384.html
Copyright © 2011-2022 走看看