CDH集群Yarn内存调优


HDP的内存调优建议:http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.1.1/bk_installing_manually_book/content/rpm-chap1-11.html

DRF

DRF: Dominant Resource Fairness,根据CPU和内存公平调度资源。CDH动态资源池默认采用的DRF计划策略。简单的理解就是内存不够的时候,多余的CPU就不会分配任务了,就让他空着;CPU不够的时候,多出来的内存也不会再启动任务了。

相关参数

RM的内存资源配置, 配置的是资源调度相关

  • RM1yarn.app.mapreduce.am.resource.mb, ApplicationMaster自身的物理内存要求
  • RM2yarn.scheduler.minimum-allocation-mb,分配给AM单个容器可申请的最小内存,如果申请的容器内存小于该值,则系统将调整至该值
  • RM3yarn.scheduler.maximum-allocation-mb,分配给AM单个容器可申请的最大内存

    上面三个值均不能超过NM1
    由于AM也是容器,所以RM1的值需要在RM2RM3范围内。

NM的内存资源配置,配置的是硬件资源相关

  • NM1yarn.nodemanager.resource.memory-mb ,NodeManager节点分配给容器的内存,cdh默认8G
  • NM2yarn.nodemanager.resource.cpu-vcores ,NodeManager节点分配给容器虚拟CPU核数,cdh默认8,但CM会自动检测内核数并修改

    NM1可以计算节点最大最大Container数量,max(Container)=NM1/RM2

AM内存配置相关参数,配置的是任务相关

  • AM1mapreduce.map.memory.mb ,map任务内存,cdh默认1G(不能超过容器最大内存限制)
  • AM2mapreduce.map.cpu.vcores ,map任务虚拟CPU核数,cdh默认1
  • AM3mapreduce.reduce.memory.mb ,reduce任务内存,cdh默认1G(不能超过容器最大内存限制)
  • AM4mapreduce.reduce.cpu.vcores ,reduce任务虚拟CPU核数,cdh默认1

    AM1AM3这两个值应该在RM2RM3这两个值之间
    AM3的值最好为AM1的两倍

测试情况

Yarn资源分配情况,虚拟CPU共分配了24核,内存则是他的两倍48G

执行任务,队列调度策略为DRF,查看内存和CPU使用情况



可以发现,内存使用受限于cpu,与DRF策略吻合

总结

Yarn队列如果采用的是DRF调度策略,则vcpu和内存最好按照1:1比例进行分配,因为多余的资源根本不会用到。


评论
  目录