我的Spark作业失败,出现以下错误:
java.lang.IllegalArgumentException: Required executor memory (33792 MB), offHeap memory (0) MB, overhead (8192 MB), and PySpark memory (0 MB)
is above the max threshold (24576 MB) of this cluster!
Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'.
我将执行器内存定义为33g,执行器内存开销为8g。但是,根据误差日志,总数应小于或等于24g。有人能帮我理解一下24g到底是指什么吗?是主节点上的RAM还是别的什么?为什么限制在24克?一旦我弄清楚了,我就可以通过编程计算出我的其他值,这样就不会再遇到这个问题了。
设置:在Jenkins上运行make命令,该命令包含多个Spark -submit命令,该命令在运行Spark 3.x的AWS EMR集群上启动它
发生此错误是因为您请求的资源多于集群(org.apache.spark.deploy.yarn.Client
源)上可用的资源。对于您的具体情况(AWS EMR),我认为您应该检查yarn.nodemanager.resource.memory-mb
的值,如消息所说(在yarn-site.xml
中或通过NodeManager Web UI),并且不要试图为每个YARN容器内存分配超过此值。