用户工具


yarn 资源配比

标准参考: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等选项