You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理EMR上Spark Structured Streaming应用日志持续增长问题

解决Spark Structured Streaming事件日志持续增长的方案

问题背景

我们运行多个7*24小时持续运行的Spark Structured Streaming应用,启用spark.eventLog.enabled=true后,HDFS中/var/log/spark/apps路径下的.inprogress事件日志文件持续增大,磁盘使用率不断攀升:

[hadoop@ip-xxx-xxx-x-xxx ~]$ hdfs dfs -du -h /var/log/spark/apps
10.6 G   10.8 G   /var/log/spark/apps/application_1815393722510_0026_1.inprogress
12.1 G   12.3 G   /var/log/spark/apps/application_1815393722510_0028_1.inprogress
9.3 G    9.4 G    /var/log/spark/apps/application_1815393722510_0029_1.inprogress
9.9 G    10 G     /var/log/spark/apps/application_1815393722510_0030_1.inprogress
5.0 G    5.1 G    /var/log/spark/apps/application_1815393722510_0031_1.inprogress
768.0 M  896 M    /var/log/spark/apps/application_1815393722510_0065_1.inprogress
[hadoop@ip-xxx-xxx-x-xxx ~]$ 

核心解决方案

1. 配置事件日志滚动策略

针对长期运行的Streaming应用,开启日志滚动避免单个.inprogress文件无限增大:

  • 添加以下配置到spark-defaults.conf,或提交应用时通过--conf指定:
    # 按文件大小滚动,达到10GB时生成新文件
    spark.eventLog.rolling.maxFileSize=10g
    # 按时间间隔滚动,每24小时生成新文件
    spark.eventLog.rolling.interval=1d
    # 启用滚动日志功能
    spark.eventLog.rolling.enabled=true
    
    两个滚动条件满足任意一个即触发新文件生成,可根据业务需求调整数值。

2. 配置事件日志自动清理策略

让Spark自动清理过期日志,无需手动维护:

  • 开启清理并设置保留规则:
    # 启用事件日志清理
    spark.eventLog.cleanup.enabled=true
    # 设置日志保留天数,示例为7天
    spark.eventLog.cleanup.daysToRetain=7
    # 清理任务执行间隔,默认每天一次
    spark.eventLog.cleanup.interval=1d
    
    注意:该功能依赖HDFS文件修改时间,需确保集群时间同步,清理任务会随Spark History Server启动自动运行。

3. Structured Streaming专属优化

针对流式应用的特性,减少不必要的日志输出:

  • 降低事件日志详细程度:
    # 仅记录WARN及以上级别的关键事件,减少日志体积
    spark.eventLog.logLevel=WARN
    
  • 禁用非必要的事件跟踪(按需选择):
    # 若不需要块管理器相关监控,可关闭对应事件日志
    spark.eventLog.blockManagerEvents.enabled=false
    

4. 临时手动清理方案

若需立即释放磁盘空间,可手动清理已完成的日志文件(请勿删除正在运行的.inprogress文件):

  • 清理7天前的非.inprogress日志文件:
    hdfs dfs -find /var/log/spark/apps -type f ! -name "*.inprogress" -mtime +7 -delete
    

验证要点

配置完成后重启Spark应用和Spark History Server,观察:

  • 新生成的.inprogress文件会按滚动策略分割为多个文件
  • 过期日志会被自动清理
  • HDFS磁盘使用率不再持续攀升

内容的提问来源于stack exchange,提问作者bheem singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 11:11:22