====== yarn 资源配比 ====== 标准参考:[[http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.1.1/bk_installing_manually_book/content/rpm-chap1-11.html|hortonworks建议配置]] ---- ===== Resource Manager ===== * yarn.scheduler.minimum-allocation-mb 分配给AM单个容器可申请的最小内存(一旦设置,不可动态改变) * yarn.scheduler.maximum-allocation-mb 分配给AM单个容器可申请的最大内存(一旦设置,不可动态改变) * yarn.scheduler.minimum-allocation-vcores:最小可申请CPU数,默认是1 * yarn.scheduler.maximum-allocation-vcores:最大可申请CPU数,默认是4 最大值 最好是 最小值的2-4倍 ===== Node Manager ===== * yarn.nodemanager.resource.memory-mb 每个节点最大可用内存(一旦设置,不可动态改变) * yarn.nodemanager.vmem-pmem-ratio 虚拟内存率,默认2.1(一旦设置,不可动态改变) * 这表示NodeManager可以分配给map/reduce Container 2.1倍的虚拟内存,如果一个container的内存是2G,实际分配给map Container容器的虚拟内存大小为2048*2.1=3225.6MB,若实际用到的内存超过这个值,NM就会kill掉这个map Container,任务执行过程就会出现异常。 * 一个NodeManager可以分配的container个数 containers = min (2 x cpu核心数, 1.8 x 硬盘数, (nodemanager可用最大内存) / container最小值) ===== Application Master ===== * mapreduce.map.memory.mb 分配给map Container的内存大小(不能大于container最大值) * map container 最好等于 container的最小值 * mapreduce.reduce.memory.mb 分配给reduce Container的内存大小(不能大于container最大值) * reduce最好是map的2倍 * mapreduce.map.java.opts 运行map任务的jvm参数,如-Xmx,-Xms等选项 * mapreduce.reduce.java.opts 运行reduce任务的jvm参数,如-Xmx,-Xms等选项