我正在尝试在Dataproc群集上运行Spark作业,但由于Yarn配置错误,Spark无法启动。
从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核,15 GB内存)。
即。这只是配置内存高于纱线默认允许的节点的问题。
答案 0 :(得分:7)
对于您遇到的这些问题感到抱歉!看起来这是已知问题的一部分,其中某些存储器设置最终根据主机的大小而不是工作机器来计算。大小,我们希望很快能在即将发布的版本中解决这个问题。
目前有两种解决方法:
如果从SSH连接运行,请使用--conf
标志显式设置spark.executor.memory和spark.executor.cores:
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
您可以根据需要调整每个执行程序的核心数/内存数;尽管你可以通过将spark.executor.memory设置为每个YARN容器中可用的完整大小来节省一些执行程序开销,但是在较小的执行程序方面犯错并让YARN将大量执行程序包装到每个工作程序上都没问题。和spark.executor.cores到每个worker中的所有核心。
编辑:截至1月27日,现在将为主机/工作机类型的任意组合正确配置新的Dataproc群集,如release notes中所述。