Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark EMR Spark作业使用的执行器少于群集中的节点_Apache Spark_Emr - Fatal编程技术网

Apache spark EMR Spark作业使用的执行器少于群集中的节点

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默认配

我已经建立了一个测试集群,由1个M4大型驱动程序和3个M4大型节点组成。在不向
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,则程序仍然运行,但没有更改。集群中是否有多个纱线队列?如果默认队列的容量较小,则作业将以较小的占用空间运行。您使用的命令行是正确的。