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

Spark提交Yarn集群堆内存过大报错,求配置调整指导

解决Spark Submit中Driver内存过大导致的JVM启动失败问题

这个错误我碰到过好多次,本质是你指定的--driver-memory 10g超出了当前环境允许的内存上限,结合你用的yarn-cluster模式,主要从这几个方向排查解决:

1. 先确认JVM位数是否拖后腿

32位的JVM最大堆内存通常撑死也就4G左右,根本没法支持10G的配置。先跑个命令确认:

java -version

如果输出里看不到64-Bit字样,那赶紧换成64位JDK,这是解决大内存配置的前提。

2. 调整Yarn集群的容器内存限制

在yarn-cluster模式下,Driver是跑在Yarn分配的容器里的,Yarn默认的单个容器最大内存可能只有8G(8192MB),你设10G自然超了。需要修改Yarn的核心配置文件yarn-site.xml:

  • 找到yarn.scheduler.maximum-allocation-mb:这个参数控制单个容器能申请的最大内存,把它改成至少10240(对应10G),建议留些余量设成12288(12G)。
  • 同步检查yarn.nodemanager.resource.memory-mb:这个是NodeManager节点总共能分配的内存总量,必须大于等于上面的最大值,否则前者的设置不生效。

修改完配置后,一定要重启Yarn的ResourceManager和NodeManager服务,不然配置不会生效。

3. 合理设置Spark的Driver内存参数

就算Yarn放开了限制,也别直接卡着上限设10g——JVM还需要一部分非堆内存(比如元空间、栈内存),留些余量更稳妥。把spark-submit命令里的--driver-memory改成9g试试:

spark-submit --master yarn-cluster --num-executors 7 --driver-memory 9g --executor-memory 16g --executor-cores 5

4. 验证配置是否生效

重启Yarn后,打开Yarn的WebUI(默认地址是http://你的ResourceManager主机名:8088),在"Cluster Metrics"里查看"Maximum Allocation per Container",确认已经是你修改后的数值,再提交任务就没问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:24:48