引言:
Spark Submit 提交任务后,Dirver端代码正常执行,但是到Excutor阶段程序卡住,频繁报错,直至任务Failed
定位:
日志failed位置打印了很多warning:
初始作业未接受任何资源;请检查群集UI以确保工作进程已注册并且有足够的资源,初步分析是资源问题,随后yarn logs把日志拉下来看看:
JVM 初始heap size设置的超过了最大的heap size,查看任务 Environment 查明真相:
解决:
JVM的初始内存 -Xms(堆内存的最小Heap值) 要求13G,但是 Excutor.memory 只给了12G,所以出现了上述问题,修改脚本保持 excutor.mermory = -Xms 的大小即可,问题搞定~
Tips: 一般情况下 -Xms -Xmx(堆内存的最大Heap值) 设置相同即可。
Oracle recommends setting the minimum heap size (-Xms)equal to the maximum heap size (-Xmx) to minimize garbage collections.