yarn-client模式下如何控制运行个executor?

How to control how many executors to run in yarn-client mode?

我有一个包含 5 个节点的 Hadoop 集群,其中 Spark 在 yarn-client 模式下运行。

我使用 --num-executors 作为执行者的数量。我能得到的执行者的最大数量是 20。即使我指定更多,我也只能得到 20 个执行者。

可分配的执行者数量是否有上限?是配置还是根据可用资源决定?

显然您的 20 个 运行 执行程序占用了所有可用内存。您可以尝试使用 spark.executor.memory 参数减少 Executor 内存,这应该为其他 executor 产生更多空间。

另外,你确定你设置的执行者编号是正确的吗?您可以通过查看“环境”选项卡中的 spark.executor.instances 值,从 Spark UI 视图中验证您的环境设置。

编辑: 正如 Mateusz Dymczyk 在评论中指出的那样,执行程序数量有限可能不仅是由于过度使用 RAM 内存造成的,还可能是 CPU 个内核造成的。在这两种情况下,限制都来自资源管理器。