FAQ - Container killed by YARN for exceeding memory limits

问题描述/异常栈

spark任务报错:Container killed by YARN for exceeding memory limits

解决方案

container内存超过了限制,解决:  
1、增大executor-memoryexecutor内存)  
明确该任务资源不足的情况(输入程序的数据量明显大于该任务的内存资源大小),增大executor-memory内存大小  
2、增大spark.yarn.executor.memoryOverheadexecutor堆外内存)
如:下图中的情况,该任务的资源是明确够用的,且错误日志中提示增大堆外内存:Consider boosting spark.yarn.executor.memoryOverhead.  
分析:默认堆外内存只有max( executorMemory * 0.10384M) ,如果只是增加executorMemory,堆外内存增加不幅度不大,根据 "11.1 GB of 11 GB physical memory used"推断需要(11.1G * 0.1 = 1.11G)的堆外内存。所以,设置参数 spark.yarn.executor.memoryOverhead  2048

FAQ-Container killed by YARN for exceeding memor - 图1

具体增大哪一项,需要结合具体场景

问题原因

待补充

作者:林帅