文档编写目的
在CDP DC上,YARN资源的调度程序默认为Capacity Scheduler。我们可以通过YARN Queue Manager UI来界面化配置YARN的资源队列,队列权重,队列资源,以及队列的ACL等。本文主要讲述如何在CDP DC 7.0.3集群上使用YARN Queue Manager UI来控制队列的资源分配和队列的提交策略。
- 测试环境:
1.Redhat7.6
2.采用root用户操作
3.CM和CDP DC版本为7.0.3
创建队列并配置资源比例
1.在集群创建下列用户,并配置到不同的组。
如下图,用户usera,userb,userc,userd,usere所属的组都跟自己同名。用户userf的组为usere,与用户usere为同一个组。
2.在CM上点击集群,再点击YARN Queue Manager UI进入队列管理界面
3.点击root旁边的三个点,进行子队列的创建,这里分别创建队列usera和userb
点击后,进行添加,设置队列名和CONFIGURED CAPACITY的百分比,这里所有队列的CONFIGURED CAPACITY百分比加起来必须是100%,否则不能保存。
全部添加完之后,如下图
4.分别提交任务到root.usera和root.userb
点击蓝色的application进行查看任务运行情况,再点击下面的Scheduler查看资源分配情况
看一下当前资源分配情况,符合设置
5.修改队列usera和userb的比例,再刷新页面进行查看
修改完成后,再刷新Scheduler页面进行查看,可以看到资源分配已经动态进行了调整。
设置队列的Mapping策略
1.为用户和用户组指定资源池队列
从YARN Queue Manager UI中点击Scheduler Configuration进行Queue Mappings的配置。
代码语言:javascript复制u:usera:usera,u:userb:userb,g:usere:usera
输入上面的配置保存,如下图。该配置是把用户usera提交的应用提交到usera队列,把用户userb提交的应用提交到userb队列。然后是usere组的用户提交的应用会默认配置到usera队列中。每个配置之间用逗号分隔。会依次从左到右进行匹配,匹配到第一个符合要求的队列后就提交到该队列,终止匹配。
2.不指定资源池队列,提交应用进行测试。
先klist看当前初始化的principal,然后用下面的命令不指定资源池队列直接进行任务的提交。
代码语言:javascript复制[root@cdh02 ~]# klist
[root@cdh02 ~]# hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 1 1
任务跑起来后,在终端看到当前的application为application_1582965765783_0004
再去YARN应用程序查看该application提交到的资源池。
可以看到用户usera在不指定队列的情况下,提交应用到了usera队列。我们配置的策略生效了。
3.同样的,再对其他的用户进行不指定资源池提交任务测试
用户userb提交的应用也提交到了userb,符合我们的配置规则。
userc我们没有配置提交的队列策略,所以在不指定队列的时候,会默认提交到default池。
用户usere和userf都是属于用户组usere,所以他们都提交到了usera队列,符合我们设置的策略。
4.为用户和组配置队列映射到具有相同名称的队列,下面图是指定所有应用程序都提交到与主要组名称相同的队列里。
代码语言:javascript复制u:%user:%primary_group
提交任务进行测试
上图可以看到用户usera提交任务到了usera队列,符合要求。下面再用userf来进行测试。
上图也可以看到,用户userf提交任务到了他的主要组usere同名的队列上,但是由于我们并没有创建usere这个资源池队列,所以任务执行失败。符合我们的配置策略。
5.还可以配置用户提交任务到与用户名相同的池里,配置方法如下
提交任务进行测试,也符合配置策略。
总结
1.管理员可以定义默认的映射策略,以将用户提交的应用程序自动提交到指定队列。而无需在提交应用程序时指定队列名称。
2.在勾选了Override Queue Mappings配置后,用户在指定提交的队列时,可以跳过配置的队列映射,而提交到用户指定的资源池队列中。
3.队列映射是使用逗号来进行分隔多个映射的。
4.在使用多个映射分配的情况下,Capacity Scheduler以从左到右的顺序处理映射匹配,以确定首先使用哪个映射。在匹配到第一个符合的映射后,就停止往后继续匹配。
5.对于没有配置的的映射策略,则默认提交到default资源池队列中。
6.可以通过u:%user:%user或者u:%user:%primary_group来配置策略,让用户提交到与自己同名或者与自己的主要组同名的资源池队列中。
7.通过配置CONFIGURED CAPACITY的百分比,来对集群的资源按比例分配到不通的资源池队列中。