解决spark日志清理问题

解决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 也有很多不同,需要区别处理。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119634.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月27日 下午9:00
下一篇 2021年11月27日 下午10:00


相关推荐

  • java中如何获取当前系统时间[通俗易懂]

    java中如何获取当前系统时间[通俗易懂]java.util包中提供的和日期时间相关的类有Date类、Calendar类和SimpleDateFormat类等。方法一:Date类对象用来表示日期和时间,该类提供了一系列操作日期和时间各组成部分的方法,Date类中使用最多的是获取系统当前的日期和时间,如Datedate=newDate();这句代码是使用当前时间创建日期对象示例代码如下:publicstaticvoidm…

    2022年10月19日
    6
  • java json decode 中文_PHP实现json_decode不转义中文的方法[通俗易懂]

    java json decode 中文_PHP实现json_decode不转义中文的方法[通俗易懂]本文实例讲述了PHP实现json_decode不转义中文的方法。分享给大家供大家参考,具体如下:默认情况下PHP的json_decode方法会把特殊字符进行转义,还会把中文转为Unicode编码形式。这使得数据库查看文本变得很麻烦。所以我们需要限制对于中文的转义。对于PHP5.4+版本,json_decode函数第二个参数,可以用来限制转义范围。要限制中文,使用JSON_UNESCAPED_U…

    2022年7月17日
    18
  • linux常用格式化命令,linux格式化命令【使用方案】

    linux常用格式化命令,linux格式化命令【使用方案】虽然电脑已经很普遍了 但是一些年长的人对电脑的操作不是很熟悉 比如在使用 win7 系统时一旦遇到 linux 格式化命令时就懵了 对于 linux 格式化命令处理起来相对来说较简单 按照我们的步骤处理 linux 格式化命令很容易上手 linux 格式化命令具体处理方法如下 如何用 LINUX 命令格式化 U 盘问 U 盘里装了 UNIX 的运行程序 在 window 里 U 盘只显示剩余 10M 空间 如何用 LI 答 1 先要卸

    2026年3月19日
    3
  • Windows安装包制作工具

    Windows安装包制作工具您是否在为新产品没有安装包或者自动升级而发愁 是否因为目前已有安装不稳定 不支持美化或者频繁被杀毒误报等而苦恼 一切交给 NSetup 解决方案来处理 您专心做产品 专业的人做专业的事 安装升级这种后勤工作交给 NSetup 辅助您一路前行 NSetup 一键自动升级安装包制作官方网站 https www nsetup cn 专业提供美化安装 增量升级 数据统计等服务产品卖点 1 产品成熟 NSetup 从 2016 年一直发布至今 不断收集客户需求和问题 逐步完善产品 使得 NSetup

    2026年3月19日
    2
  • JDBC预处理对象prepareStatement[通俗易懂]

    JDBC预处理对象prepareStatement[通俗易懂]JDBC预处理对象prepareStatement概述一、SQL注入问题SQL注入:用户输入的内容作为了SQL语句语法的一部分,改变了原有SQL真正的意义。假设有登录案例SQL语句如下:SELECT*FROM用户表WHERENAME=用户输入的用户名ANDPASSWORD=用户输的密码;此时,当用户输入正确的账号与密码后,查询到了信息则让用户登录。但是当用户输入的账…

    2022年6月1日
    39
  • 机械手套压力传感器

    机械手套压力传感器

    2026年3月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号