我有以下配置的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 回答
你的记忆利用率是多少?您是否在节点管理器主机上检查了yarn-site.xml,以查看是否通过节点管理器配置公开了所有内存和CPU?
您可以为节点列表执行yarn node -list,然后为yarn node -status(我相信)查看此节点向yarn展示的资源列表 .
请参阅yarn log -applicationId以查看应用程序交互的详细日志,包括输出的捕获 .
最后查看资源管理器主机上的yarn日志,看看是否存在任何问题