Apache spark EMR Spark作业使用的执行器少于群集中的节点
我已经建立了一个测试集群,由1个M4大型驱动程序和3个M4大型节点组成。在不向Apache spark EMR Spark作业使用的执行器少于群集中的节点,apache-spark,emr,Apache Spark,Emr,我已经建立了一个测试集群,由1个M4大型驱动程序和3个M4大型节点组成。在不向spark submit添加任何额外配置参数的情况下,我想测试这个集群配置。然而,当我检查Spark UI时,我可以看到我的Spark作业只使用了2个执行器,我还注意到Ganglia中的一个节点几乎没有做任何事情(好像根本没有使用它) 如何确保所有节点都能完成任务?spark submit不使用整个集群,除非指定执行器的数量、executor core和executor memory。默认情况下,它使用spark默认配
spark submit
添加任何额外配置参数的情况下,我想测试这个集群配置。然而,当我检查Spark UI时,我可以看到我的Spark作业只使用了2个执行器,我还注意到Ganglia中的一个节点几乎没有做任何事情(好像根本没有使用它)
如何确保所有节点都能完成任务?
spark submit
不使用整个集群,除非指定执行器的数量、executor core
和executor memory
。默认情况下,它使用spark默认配置中指定的配置。您可以在spark安装目录中的spark defaults.conf
文件中看到默认配置
现在,默认情况下,spark submit在执行器中使用2个执行器512MB内存。因此,如果您想要整个集群,请使用指定执行器核心和执行器内存的spark submit命令
您可以找到这些示例,因此我尝试将它们设置为不同的值,但请注意使用的执行器数量和执行时间没有变化。我听说EMR会在集群创建时更改spark默认值,所以可能就是这样做的?我仍然不确定为什么它在运行我的作业时不使用所有执行器(3个节点)?为什么要更改默认配置?您也可以在命令行中指定执行器编号。你试过这么做吗?哦,对不起,我的留言不清楚。我没有更改默认配置。我在spark submit上使用--options来指定它,但是我在spark UI中没有看到任何更改。下面是我尝试过的示例之一:spark submit--master Thread--部署模式集群--executor memory 5500m--num executors 3--executor cores 4--class。。。但是,只使用了驱动程序+2个执行器,如果我将num executors指定为4,则程序仍然运行,但没有更改。集群中是否有多个纱线队列?如果默认队列的容量较小,则作业将以较小的占用空间运行。您使用的命令行是正确的。