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

AWS EMR v6.7.0历史服务器查看大任务报HTTP 500内存溢出错误

解决AWS EMR v6.7.0 History Server查看大型任务时的HTTP 500(OOM)错误

问题原因

从报错日志可明确,History Server加载解析大型任务的事件日志时,Java堆内存不足,抛出OutOfMemoryError进而触发HTTP 500异常。小型任务日志量小,内存占用在阈值内,因此能正常查看。

解决方案

  • 调高History Server堆内存上限
    History Server默认堆内存无法支撑大型任务的日志解析,需通过spark.history.server.maxMemory参数提升内存配额,比如设置为8G(建议不超过节点可用内存的70%,根据实际情况调整):
    在EMR集群配置的Spark分类中添加:

    [
      {
        "Classification": "spark-history-server",
        "Properties": {
          "spark.history.server.maxMemory": "8g"
        }
      }
    ]
    

    若History Server已运行,修改配置后需重启服务:

    sudo systemctl restart spark-history-server
    
  • 启用事件日志压缩降低内存开销
    开启事件日志压缩,缩小日志文件体积,减少解析时的内存占用:
    在Spark默认配置中添加:

    [
      {
        "Classification": "spark-defaults",
        "Properties": {
          "spark.eventLog.compress": "true",
          "spark.eventLog.compression.codec": "snappy"
        }
      }
    ]
    
  • 配置日志自动清理减少内存占用
    开启History Server的日志自动清理功能,避免旧日志持续消耗内存和存储资源:

    [
      {
        "Classification": "spark-history-server",
        "Properties": {
          "spark.history.fs.cleaner.enabled": "true",
          "spark.history.fs.cleaner.interval": "1d",
          "spark.history.fs.cleaner.maxAge": "7d"
        }
      }
    ]
    

    上述配置表示每日清理一次,保留最近7天的日志。

  • 限制缓存的应用数量
    通过spark.history.ui.maxApplications限制History Server同时缓存的应用UI数量,避免内存被过多应用占用:

    [
      {
        "Classification": "spark-history-server",
        "Properties": {
          "spark.history.ui.maxApplications": "50"
        }
      }
    ]
    
  • 升级History Server节点规格
    若上述配置调整后仍无法解决问题,需为运行History Server的节点选择更大内存规格的EC2实例,确保节点有足够物理内存支撑堆内存分配。

内容的提问来源于stack exchange,提问作者Golan Kiviti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:22:09