华为C80 yarn提交mapreduce异常:OutOfMemoryError:GC overhead limitexceeded kill -9 %p

yarn提交mapreduce异常:OutOfMemoryError:GC overhead limitexceeded kill -9 %p

记一次生产环境的运算异常
生产环境一直运行稳定的离线计算任务,从未出现过异常,忽然发现最近在本地提交到hadoop集群时发生异常,每当提交到yarn申请资源时,程序立刻被杀死。
任务由于oom被杀死异常
本地提交到集群开始运行程序,kerberos认证此时已通过,可以看到时从程序在计算表分区大小时,被杀死。
被kill掉的任务已经通过认证准备开始计算时被kill掉的,说明执行kill的应该是集群的机制导致的,而非本地调度机器所为。另外可以看到此时被kill的任务虽然已经通过了kerberos认证,但未申请到yarn资源,未分配到application id ,那现在基本可以断定,是yarn申请资源的准备阶段出现了问题。又因为导致OOM的原因是GC超限,基本可以定位问题的原因是yarn的gc参数设置过小或者被占用导致释放不出资源导致的。

问题已经清晰,那么调整参数测试
在提交前导入指定的yarn gc参数环境变量
GC_OPTS_YARN 参数的默认大小为128m,这里我们调大

export GC_OPTS_YARN="-Xmx4096m"

重新yarn jar提交mapreduce任务,完美解决。

posted @ 2019-11-13 20:02  sssuperMario  阅读(367)  评论(0编辑  收藏  举报