2015-11-02 100 views
1

我使用EMR 4.1.0 + spark 1.5.0 + YARN來處理大數據。我試圖利用完整的集羣,但是一些YARN沒有分配所有資源。EMR 4.1.0 + Spark 1.5.0 + YARN資源分配

  • 使用4×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 (so yarn can管理內存和內核)

然後,我開始pyspark與 pyspark --master紗客戶--num執行人24 --executor內存8347米--executor,核心4

但是RM用戶界面會顯示以下

enter image description here

它只分配21個容器vs請求24個 27 GB保留內存和12個保留核心可用於分配更多3個容器。對?

缺少什麼我在這裏?

謝謝!

回答

0

From here,它看起來像你的基地應該是53248M。此外,還有10%的內存開銷必須考慮(spark.yarn.executor.memoryOverhead)。 53248 * .9 = 47932M,可以在每個節點上分配。如果爲每個執行器分配8347​​M,則每個節點只能包含其中的5個。 47932 - 5 * 8347 = 6197M,這是沒有足夠的可用內存來推出第六執行者。最後3個執行程序(每個節點一個)不會啓動,因爲沒有足夠的內存供它們啓動。如果您想擁有24個容器,請使用--executor -memory 7987M

啓動,注意,如果您使用此配置時將有6個未使用的內核/節點。此電子表格可幫助您找到任何類型/大小的羣集的最佳配置

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