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

配置指定executor cores的构建任务为何仍出现OOM错误?

大资源配置下仍出现执行器OOM失败的核心原因
  • 数据倾斜导致单任务过载:作业存在的大任务多由数据倾斜引发,即单个key关联的数据量远高于其他key。Spark的任务调度逻辑为单个子任务仅分配到一个执行器的单个线程处理,无论总执行器规模达到NUM_EXECUTORS_64的多大量级,倾斜的大任务只会由单个执行器承接,当单任务数据量超出对应执行器内存上限时,就会直接触发OOM导致执行器丢失,和集群总资源规模无关联。
  • 执行器核心与内存配比失衡:配置EXECUTOR_CORES_LARGE后若未同步调整执行器内存配比,会出现单核心可用内存不足的问题。常规Spark部署的默认配比为1核对应2~4G执行器内存,若单个执行器配置8核及以上大核心数,但对应执行器内存仅为几G,同一执行器上多任务并行执行时会争抢堆内存,触发OOM。另外DRIVER_MEMORY_LARGE仅作用于驱动节点,负责任务调度、元数据存储等逻辑,完全不参与执行器侧的计算内存分配,无法解决执行器侧的OOM问题。
  • Shuffle阶段内存开销超阈值:若大任务存在join、group by、orderBy等需要shuffle的操作,shuffle过程中拉取、排序、缓存中间数据的内存开销远高于常规计算逻辑。Spark默认仅将执行器60%左右的内存分配给执行+存储共享区域,剩余部分为系统预留空间,即便执行器内存绝对值较高,当单批次shuffle中间数据量超出执行区域可用内存上限时,会触发频繁溢写磁盘,数据量过大时溢写速度跟不上数据读取速度,仍会直接触发OOM杀死执行器。
  • 超大对象/全量加载逻辑占满内存:若作业逻辑中存在单条超大数据行(如单条记录包含数十MB的二进制字段)、未做分片的全量小表加载、超大广播变量配置,单个任务加载这类资源时会直接占满执行器堆内存,即便没有数据倾斜问题也会触发OOM。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:24:03