YARN动态资源池使用配置 - CSDN博客
动态资源池是用来做资源配置和调度策略管理,动态资源池中可以运行YARN应用和Impala查询任务。动态资源池允许用户在运行YARN应用或Impala查询任务的时候指定特定的池并调度池中可用的资源。一个典型的应用场景就是当我们通过Oozie调度Pig任务的时候,如果我们同时提交大量的Oozie任务,Oozie任务在启动launch的时候是需要占用资源的,可能就会导致资源占满而使后续的Pig任务无法执行。在CDH3U5中,我们会在FairScheduler中配置2个queue,一个放置Oozie的Launch任务,并设置其可用的slot数,另外一个放置Pig任务来解决。在YARN中资源已经不是用slot来表示,而是用VCores和Memory来表示。我们可以通过YARN动态资源管理来解决上述问题。
使用步骤:
1)关闭未声明资源池的自动生成。
进入YARN面板,选择配置->服务范围->资源管理->yarn.scheduler.fair.allow-undeclared-pools,默认选项是开启的,需要关闭,否则如果用户指定一个尚未声明的资源池时,YARN将为自动生成一个相对于的资源池。我们需要关闭该选项,修改之后点击保存更改,重启YARN服务生效。
2)关闭"使用默认队列时的Fair Scheduler用户"选项
进入YARN面板,选择配置->ResourceManager Default Group->yarn.scheduler.fair.user-as-default-queue,该选项默认是开启,表示用户提交任务时,如果未指定池名称,就使用用户名作为默认的池名称,我用需要关闭该选项,让未指定此名称时,任务运行在default池中。点击保存更改,重启YARN服务生效。
3)进入动态资源池配置界面
通过集群->资源管理->动态资源池进入。
默认情况下只有一个资源池root.default,我们可以手动添加资源池并分配使用权重、VCores和内存。
4)添加动态资源池。
选择动态资源池->配置->添加资源池。
将弹出一个引导界面:
在常规面板输入资源池名称:譬如oozie,计划策略一般默认采用DRF策略。
在YARN面板我们可以配置权重,虚拟内核,内存大小,以及正在运行的应用程序最大数量,当配置虚拟内核和内存之后着2个参数将优先于权重配置。其中权重定义了资源池之间分配资源的比例,譬如上图中oozie池全权重为1而default池的权重为2,那么集群资源的33.3%会分配给oozie。注意,这里提到的资源分配不是一个静态的概念,如果当前资源池default中没有任务执行,那么资源池oozie是可以运行使用超过33.3%的集群资源的,譬如50%。虚拟内核表示资源池能够调度的虚拟内核数,可以不做配置。内存大小表示资源池能够调度的内存大小,可以不做配置。正在运行的应用程序最大数量表示资源池中能够同时运行的application数量,也就是MapReduceV1中所说的job数量。
点击确认即可。
5)根据需要配置计划模式
YARN动态资源池可以根据需要配置在不同时间段选择不同的资源调度规则。
操作流程:
a)选择动态资源池->配置->计划模式->添加计划模式。
点击之后将弹出一个引导界面。
我们添加一个工作日的计划模式,在配置集中输入配置集的名称,选择重复的模式,以及重复的天数和时间。
最终我们添加2个计划模式,一个在工作日全天运行,一个在周末全天运行。
b)根据不同的计划模式配置不同的调度规则。
添加2个计划模式后,我们在编辑资源池的编辑界面就可以看到新添加的YARN配置级了,我们可以根据需要配置相应的权重、虚拟内核、内存和运行应用程序的最大数量值。
譬如我们可以配置在weekday模式下选择default池权重为66.7%,oozie池权重为33.3%。
在weekend模式下选择default池权重为50%,oozie池权重为50%。
在default模式下选择default池权重为75%,oozie池权重为25%。
6)在Oozie中使用动态资源池方法:
在workflow.xml文件中分别加入oozie launch的启动配置池和mapreduce的job运行池即可。参数如下:
<property>
<name>oozie.launcher.mapred.job.queue.name</name>
<value>root.oozie</value>
</property>
<property>
<name>mapred.job.queue.name</name>
<value>default</value>
</property>
加入以上配置之后运行对于的oozie任务可以在动态资源池面板中看到资源池的使用情况。下图表明配置成功。