首页 文章

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

提问于
浏览
2

我有以下配置的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个 Actuator ,而在(2)情况下它能够启动 . 虽然每个执行程序都有内存可用,为什么它不能在(1)情况下启动12个执行程序?

1 回答

  • 0

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

    您可以为节点列表执行yarn node -list,然后为yarn node -status(我相信)查看此节点向yarn展示的资源列表 .

    请参阅yarn log -applicationId以查看应用程序交互的详细日志,包括输出的捕获 .

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

相关问题