我在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
在yarn-site.xml: yarn.nodemanager.resource.memory-mb 10240
其他参数设置为默认值
我有一个6节点的集群,每个节点上都安装了Spark Client组件。每次我运行应用程序时,在Spark UI中只能看到2个执行器和1个驱动程序。执行器出现在不同的节点上。
为什么Spark不能创建更多的执行器?为什么只有2个而不是6个?
我发现了一个非常类似的问题:Apache Spark:设置executor实例不会改变executor,但是增加memory -mb参数对我的情况没有帮助。
配置第一眼看起来不错。
确保您已经覆盖了正确的spark-defaults.conf文件。
如果修改后的spark-defaults文件在"$SPARK_HOME/conf/"目录下,执行echo $SPARK_HOME
检查。否则Spark将无法看到您的更改。
你可以运行你的spark-shell或spark-submit参数--num-executors 6
(如果你想有6个执行器)。如果Spark创建了比以前更多的执行器,您可以肯定,这不是内存问题,而是不可读配置的问题。