--- spark的job在yarn的資源分配

資源

現在有6臺機器 每臺機器16個core 64g的內存

資源分配

6Node 16core/臺 64g/臺

現可用資源一共96個core 384g ;每臺機器預留1core和1g;那麼剩下90個core 378g的可用資源

分配core

core=5 官方定義超過5會對hdfs吞吐量造成影響
也就是說每個executor最多可以同時運行5個core

分配executor

用剩餘的core除以每個executor的最大使用量 90/5=18
executor=18-1 applicationmaster會用一個;預留1個給它
故最後作業可以使用的最大executor數量爲17

分配memory

可用的memory除以executor的總數;減去memoryOverhead的佔用量就是剩餘的作業每個executor可以申請的最大memory

memory = 19 (378/18)X 0.93 向下取整是19

注意:因爲executor container裏由spark.yarn.executor.memoryOverhead和spark.executor.memeory兩部分構成;其中memoryOverhead佔了0.07剩下的就是spark.executor.memeory=19的了。

注意,在Spark-1.6.1中0.07已經改成了0.1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章