我在YARN上使用参数运行我的Spark应用程序:
在spark-defaults.conf中:
spark.master yarn-client
spark.driver.cores 1
spark.driver.memory 1g
spark.executor.instances 6
spark.executor.memory 1g
<-b>在yarn-site.xml中:
yarn.nodemanager.resource.memory-mb 10240
所有其他参数都设置为默认值。
我有一个6节点集群,每个节点上都安装了Spark Client组件。 每次运行应用程序时,Spark UI中只能看到2个执行程序和1个驱动程序。执行程序出现在不同的节点上。
为什么Spark不能创建更多的执行者?为什么只有2而不是6?
我发现了一个非常相似的问题:Apache Spark: setting executor instances does not change the executors,但增加memoty-mb参数对我的情况没有帮助。
答案 0 :(得分:1)
乍一看配置看起来还不错。
确保您已覆盖正确的spark-defaults.conf文件。
对当前用户执行echo $SPARK_HOME
并验证修改后的spark-defaults文件是否在$ SPARK_HOME / conf /目录中。否则Spark无法看到您的更改。
我修改了错误的spark-defaults.conf文件。我的系统中有两个用户,每个用户都有一个不同的$ SPARK_HOME目录集(之前我不知道)。这就是为什么我看不到我的设置对其中一个用户的任何影响。
您可以使用参数--num-executors 6
运行spark-shell或spark-submit(如果您想拥有6个执行程序)。如果Spark创建的执行程序比以前多,那么您将确定,这不是内存问题,而是具有不可读配置的内容。