我的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个执行程序?
答案 0 :(得分:0)
你的内存利用率是多少?您是否在节点管理器主机上检查了yarn-site.xml,以查看是否通过节点管理器配置公开了所有内存和CPU?
您可以为节点列表执行纱线节点列表,然后为纱线节点-status(我相信)查看此节点向纱线公开的列表,以及资源。
咨询yarn log -applicationId以查看应用程序交互的详细日志,包括输出的捕获。
最后查看资源管理器主机上的yarn日志以查看是否存在任何问题