資源
現在有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