4

我使用参数在 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

在纱线站点.xml 中:

yarn.nodemanager.resource.memory-mb 10240

所有其他参数都设置为默认值。

我有一个 6 节点集群,并且 Spark 客户端组件安装在每个节点上。每次我运行应用程序时,Spark UI 中只有 2 个执行程序和 1 个驱动程序可见。执行者出现在不同的节点上。

为什么 Spark 不能创建更多的执行者?为什么只有 2 而不是 6?

我发现了一个非常相似的问题:Apache Spark: setting executor instances doesn't change the executors,但增加 memoty-mb 参数对我的情况没有帮助。

4

1 回答 1

1

乍一看,配置看起来不错。

确保您已覆盖正确的 spark-defaults.conf 文件。

为当前用户执行echo $SPARK_HOME并验证修改后的 spark-defaults 文件是否在 $SPARK_HOME/conf/ 目录中。否则 Spark 无法看到您的更改。

我修改了错误的 spark-defaults.conf 文件。我的系统中有两个用户,每个用户都有不同的 $SPARK_HOME 目录集(我以前不知道)。这就是为什么我看不到我的设置对其中一位用户的任何影响。

您可以使用参数运行 spark-shell 或 spark-submit --num-executors 6(如果您想要 6 个执行程序)。如果 Spark 创建了比以前更多的执行程序,您可以肯定,这不是内存问题,而是配置不可读的问题。

于 2016-10-26T22:28:09.483 回答