我使用以下参数在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客户端组件。每次运行应用程序时,spark ui中只有2个执行器和1个驱动程序可见。执行器出现在不同的节点上。
为什么spark不能创建更多的执行者?为什么只有2而不是6?
我发现了一个非常类似的问题:apachespark:设置executor示例不会更改executors,但是增加memoty mb参数对我的情况没有帮助。
1条答案
按热度按时间8gsdolmq1#
配置乍一看还行。
确保已覆盖正确的spark-defaults.conf文件。
执行
echo $SPARK_HOME
并验证修改后的spark defaults文件是否在$spark\u home/conf/目录中。否则spark看不到您的更改。我修改了错误的spark-defaults.conf文件。我的系统中有两个用户,每个用户都有一个不同的$spark\u主目录集(我以前不知道)。这就是为什么我看不到我的设置对其中一个用户的任何影响。
你可以运行你的sparkshell或者sparksmit和一个参数
--num-executors 6
(如果你想有6个遗嘱执行人)。如果spark创建的执行器比以前多,您可以肯定,这不是内存问题,而是无法读取的配置问题。