====== 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等选项