1.文档编写目的
在CDP集群中Yarn的资源池调度策略由CDH版本的FairScheduler转变为CapacityScheduler。在集群的使用过程中,如何更好的给各个租户分配集群资源?如何确保集群的资源可以更合理的使用?
在集群资源空闲时,如果租户还按照分配的资源大小运行作业,则会导致集群的资源闲置浪费,本篇文章主要通过介绍通过调整资源池的User Limit Factor参数来使租户可以超用分配的资源。
1.测试环境说明
2.测试方案
3.User Limit Factory场景测试
4.详细测试结果
5.总结
1.操作系统Redhat7.6
2.CDH7.1.6/cm7.3.1
3.使用root用户操作
2.测试环境说明
对资源池使用控制测试主要使用Hadoop自带的Pi用例进行测试,同时对集群的整体资源及配置参数也做了一定的调整,将资源使用都调整为GB单位,以便于统计分析数据:
1.本次测试环境资源有限,Yarn的CPU和内存分别为:12Vcore和24GB
2.调整Gateway的Memory配置,确保作业使用的内存数值为整数
3.调整Gateway的CPU配置,确保作业使用的CPU为整数值
注意:要注意上述截图的几个参数调整(ApplicationMaster/Map),这样能更好的查看资源池资源使用情况。Reduce参数可以不用关注,资源池使用只关注Map阶段即可。
3.测试方案
本次方案主要通过几个场景来测试User Limit Factor参数对资源池的控制,该参数默认为1,通过减小、增多等方式测试是否能够合理的控制资源超用的比例,以及该参数与配置资源池的MAXIMUM MEMORY和VCORES之间的关系,大概有如下几种测试方案:
以下计算方式均是以Map为标准计算,2GB为Map的Memory配置,假设Vcores=x, Memory=y。
1.Memory和Vcores配置一致的情况(2GB * x = y)
2.Memory比Vcores大的情况(2GB * x < y)
3.Memory比Vcores小的情况(2GB * x > y)
以上三种测试方案,均需要对User Limit Factor参数设置为0.5,1,2几个测试范围,在1.5及以上场景时增加MAXIMUM MEMORY和VCORES的测试,MAX也区别上述三种情况,合计总共测试案例为18个。
4.User Limit Factor场景测试
1.调整资源池的资源配置(MEMORY、VCORES)
点击CM界面的群集>YARN Queue Manager UI
点击root资源池上的三个小点,点击Edit Child Queues,进入资源配置界面
在资源配置界面就可以修改对应资源池的资源配置(Memory、Vcores)
2.设置资源池的User Limit Factor参数
3.执行如下命令跑一个MR的PI作业测试资源使用
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 50 50
按照上述准备好的测试场景对资源池使用情况进行测试并记录测试结果。
5.详细测试结果
经过对测试方案中三种测试场景的测试并通过与Max Memory和Max Vcores的配置集合测试,共形成了18组测试结果,具体结果如下图所示:
通过测试的数据可以看到,场景一下的资源分配上始终多出了一个ApplicationMaster占用的资源,如果去掉ApplicationMaster的资源消耗,则资源的限制是正确的。这里猜测在此场景下ApplicationMaster的资源占用并未被User Limit Factor参数限制。
6.总结
通过上述的18组测试数据,基本弄清楚了资源池的User Limit Factor参数与资源池配置的一个关系,以及资源池MAX MEMORY和MAX VCORES之间的关系,具体总结如下:
1.通过调整资源池的User Limit Factor参数可以限制作业对相应资源池资源的使用,参数越小对资源的使用越少,参数越大对资源的使用越大,可以超出配置的CONFIGED资源(即:当集群有充足的资源时,可以做到资源超分配)。
2.当Memory和Vcores配置一致情况(2GB * x = y)时,User Limit Factor参数不会对作业的ApplicationMaster占用的资源进行限制。
3.当Memory大于或小于Vcores的配置情况(2GB * x > y 或 2GB * x < y)时,User Limit Factor会结合较大的那个值(CONFIGED MEMORY 或 CONFIGED VCORES)进行资源使用限制。
4.每个资源池配置的MAX MEMORY和MAX VCORES,会对资源池的最大资源使用起到绝对性的限制,即使User Limit Factor配置超出MAX的限制,资源限制也会以MAX配置为准。
5.当资源池配置了MAX MEMORY和MAX VCORES参数时,资源池的最大资源限制,则以最小的那个MAX配置为准(计算方式参考:2GB * x > y)。