EMR 4.1.0 + Spark 1.5.0 + YARN资源分配

时间:2015-11-02 23:26:18

标签: apache-spark yarn emr

我正在使用EMR 4.1.0 + spark 1.5.0 + YARN来处理大数据。我正在尝试使用完整集群,但有些YARN没有分配所有资源。

  • 使用4个X c3.8xlarge EC2从节点(每个60.0 GB内存和32个内核)
  • 根据此article我在EMR群集中设置了以下参数

yarn.nodemanager.resource.memory-mb - > 53856 yarn.nodemanager.resource.cpu-vcores - > 26 yarn.scheduler.capacity.resource-calculator - > org.apache.hadoop.yarn.util.resource.DominantResourceCalculator (所以纱线可以管理内存和核心)

然后我开始使用pyspark pyspark --master yarn-client --num-executors 24 --executor-memory 8347m --executor-cores 4

但RM UI显示以下

enter image description here

它只分配21个容器,而不是24个容器 27 GB预留内存和12个预留内核可用于分配更多3个容器。正确?

我在这里缺少什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

From here,看起来你的基数应该是53248M。此外,必须考虑10%的内存开销(spark.yarn.executor.memoryOverhead)。 53248 * .9 = 47932M,可以在每个节点上分配。如果为每个执行程序分配8347​​M,则每个节点只能包含其中的5个。 47932 - 5 * 8347 = 6197M,没有足够的可用内存来启动第6个执行程序。最后3个执行程序(每个节点一个)没有启动,因为它们没有足够的内存来启动它们。如果您想拥有24个容器,请使用--executor-memory 7987M

启动

注意,如果您使用此配置,则将有6个未使用的核心/节点。此电子表格可以帮助您找到任何类型/大小的群集的最佳配置

https://docs.google.com/spreadsheets/d/1VH7Qly308hoRPu5VoLIg0ceolrzen-nBktRFkXHRrY4/edit#gid=1524766257