自动设置dataproc集群后,yarn/spark的内存分配不正确

mfpqipee  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(502)

我试图在dataproc集群上运行spark作业,但是spark不会启动,因为Yarn配置错误。
从shell(在主机上本地)运行“spark shell”时,以及从本地计算机通过web gui和gcloud命令行实用程序上载作业时,我收到以下错误:

15/11/08 21:27:16 ERROR org.apache.spark.SparkContext: Error initializing     SparkContext.
java.lang.IllegalArgumentException: Required executor memory (38281+2679 MB) is above the max threshold (20480 MB) of this cluster! Please increase the value of 'yarn.s
cheduler.maximum-allocation-mb'.

我试图修改中的值 /etc/hadoop/conf/yarn-site.xml 但这并没有改变什么。我不认为它从那个文件中提取配置。
我在多个站点(主要是欧洲)尝试了多个集群组合,我只在低内存版本(4核,15gb内存)下使用了这种组合。
i、 e.这只是为高于默认允许的内存配置的节点上的问题。

72qzrwbm

72qzrwbm1#

很抱歉你遇到了这些问题!看起来这是一个已知问题的一部分,某些内存设置最终是基于主计算机的大小而不是工作计算机的大小来计算的,我们希望在即将发布的版本中尽快解决这个问题。
目前有两种解决方法:
使用内存等于或小于工作机类型的主机类型。
使用 --conf 如果从ssh连接运行,则标记如下:

spark-shell --conf spark.executor.memory=4g --conf spark.executor.cores=2

或者如果你在跑步 gcloud beta dataproc ,使用 --properties :

gcloud beta dataproc jobs submit spark --properties spark.executor.memory=4g,spark.executor.cores=2

您可以根据需要调整每个执行器的内核/内存数量;错误地选择较小的执行器,让yarn将许多执行器打包到每个worker上是可以的,不过,通过将spark.executor.memory设置为每个yarn容器中可用的完整大小,并将spark.executor.cores设置为每个worker中的所有核心,可以为每个执行器节省一些开销。
编辑:从1月27日起,新的dataproc集群将被正确配置为任何主/工作机类型的组合,如发行说明中所述。

相关问题