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

你可能感兴趣的:(Spark学习笔记)