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

Spark集群Onheap执行内存峰值显示0.0B问题排查求助

Spark集群Peak Execution Memory Onheap显示0.0B的排查与配置建议

问题概述

Spark集群出现Peak Execution Memory Onheap显示为0.0B的异常情况,对比正常集群(Offheap为0.0B,Onheap处于512MB-1GB区间),需排查原因并确认配置调整方向。

可能原因及对应配置调整

  • 执行内存分配策略错误
    Spark默认使用堆内执行内存,若配置强制关闭或挤占堆内执行内存空间,会导致Onheap显示为0。需检查以下核心配置:

    • spark.memory.offHeap.enabled:若设为true但未合理分配堆内执行内存比例,会导致堆内无执行内存可用。无需堆外内存时可设为false;若启用堆外,需保证堆内仍有足够执行内存配额。
    • spark.memory.fraction:控制堆内存中执行+存储的总占比(默认0.6),若被设为0,会直接导致堆内无执行内存分配。
    • spark.memory.storageFraction:控制执行内存中预留存储的比例(默认0.5),若设为1会完全挤占执行内存,但一般不会直接导致0B。
  • 任务未触发执行内存使用
    若集群运行的均为轻量计算任务(无Shuffle、Join、Aggregation等操作),未触发执行内存的使用,会出现峰值为0的情况。可通过运行大表Shuffle等测试任务验证内存分配是否正常。

  • 监控指标采集异常
    Spark UI或监控组件的指标采集逻辑异常,可能导致数据显示错误。可重启Spark应用或集群监控服务,重新查看指标是否恢复。

  • Executor资源配置不合理

    • spark.executor.memory:若Executor堆内存设置过小,且全部被存储内存、用户内存占用,会导致执行内存无剩余空间。需合理配置Executor堆内存大小。
    • spark.executor.memoryOverhead:该参数设置过大时,会挤占Executor堆内存的可用空间,间接影响执行内存分配。

配置调整示例

若确认是配置问题,可通过以下参数恢复堆内执行内存分配:

# 关闭堆外执行内存(按需调整)
spark.memory.offHeap.enabled=false
# 恢复默认堆内存分配比例
spark.memory.fraction=0.6
spark.memory.storageFraction=0.5
# 配置合理的Executor堆内存
spark.executor.memory=2g

内容的提问来源于stack exchange,提问作者Mohan Rayapuvari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:12:23