更新时间:2024-11-29 GMT+08:00
Driver端提示executor memory超限
问题背景与现象
内存超限导致提交Spark任务失败。
原因分析
在Driver日志中直接打印申请的executor memory超过集群限制。
16/02/06 14:11:25 INFO Client: Verifying our application has not requested more than the maximum memory capability of the cluster (6144 MB per container) 16/02/06 14:11:29 ERROR SparkContext: Error initializing SparkContext. java.lang.IllegalArgumentException: Required executor memory (10240+1024 MB) is above the max threshold (6144 MB) of this cluster!
Spark任务提交至Yarn上面,运行task的executor使用的资源受yarn的管理。从报错信息可看出,用户申请启动executor时,指定10G的内存,超出了Yarn设置的每个container的最大内存的限制,导致任务无法启动。
解决办法
修改Yarn的配置,提高对container的限制。如可通过调整“yarn.scheduler.maximum-allocation-mb”参数的大小,可控制启动的executor的资源,修改之后要重启Yarn服务。
配置修改方法:
MRS Manager界面操作:
- 登录MRS Manager页面。
- 选择“服务管理 > Yarn > 服务配置”将“参数类别”修改为“全部配置”。
- 在“搜索”栏输入“yarn.scheduler.maximum-allocation-mb”修改参数并保存重启服务。如下图所示:
图1 修改Yarn服务参数
FusionInsight Manager界面操作:
- 登录FusionInsight Manager页面。
- 选择“集群 > 服务 > Yarn”,单击“配置”,选择“全部配置”。
- 在“搜索”栏输入“yarn.scheduler.maximum-allocation-mb”修改参数并保存重启服务。
父主题: 使用Spark