我有一个5个节点的Hadoop集群,其中Spark以yarn-client
模式运行。
我使用--num-executors
作为执行者的数目。我能找到的最多的遗嘱执行人是20人。即使我指定更多,我也只能得到20个执行人。
是否有可分配的执行器数量的上限?它是一种配置还是基于可用资源做出的决策?
显然您的20个正在运行的执行程序消耗了所有可用内存。你可以尝试用spark.executor.memory
参数减少Executor内存,这应该为其他Executor留下更多的地方。
另外,您确定您正确地设置了执行者编号吗?您可以通过查看environment选项卡中的spark.executor.instances
值,从Spark UI视图验证您的环境设置。
EDIT:正如Mateusz Dymczyk在评论中指出的那样,有限的执行器数量不仅可能是由于RAM内存过度使用造成的,也可能是CPU内核造成的。在这两种情况下,限制都来自资源管理器。