已启动的执行程序少于指定的执行程序数

时间:2016-02-15 12:52:06

标签: apache-spark yarn

我的EMR集群具有以下配置:

        Number of cores, RAM(GB),  yarn.nodemanager.resource.memory-mb(MB)
Master:         4          15          11532
core(slave1):   16         30          23040
core(slave2):   16         30          23040
core(slave3):   16         30          23040
core(slave4):   16         30          23040

我正在启动一个Spark应用程序,其中一个作业使用--master yarn-client分为两个阶段,具有以下配置:

--num-executors 12 --executor-cores 5 --executor-memory 7G ---->(1)
--num-executors 12 --executor-cores 5 --executor-memory 6G ---->(2)

我没有修改任何其他参数,因此spark.storage。*和spark.shuffle。* fractions是默认值。

我为了找到上述配置而执行的计算(主节点没有执行任何计算,即使用Ganglia验证,除了作为驱动程序)是:

1. allocated 15 cores to yarn per node and started 3 executors/node 
   which implies 4(# of slave nodes)*3 = 12 executors. 
2. 15 cores/3 executors = 5 cores per executor
3. 23040*(1-0.07) ~ 21G. Dividing this among three executors i.e
   21/3=7G

在(1)配置中,它不启动12个执行器,而在(2)情况下它能够启动。虽然每个执行程序都有内存可用,为什么它不能在(1)情况下启动12个执行程序?

1 个答案:

答案 0 :(得分:0)

你的内存利用率是多少?您是否在节点管理器主机上检查了yarn-site.xml,以查看是否通过节点管理器配置公开了所有内存和CPU?

您可以为节点列表执行纱线节点列表,然后为纱线节点-status(我相信)查看此节点向纱线公开的列表,以及资源。

咨询yarn log -applicationId以查看应用程序交互的详细日志,包括输出的捕获。

最后查看资源管理器主机上的yarn日志以查看是否存在任何问题