动态资源池配置

Yarn默认有三种调度器——FIFO、Capacity以及Fair Scheduler,CDH推荐使用Fair Scheduler。通过动态资源池的Web UI,我们可以十分方便的配置Fair Scheduler。

1)点击群集→动态资源池配置进入动态资源池的配置界面

CDP yarn 配置资源池 cdh资源队列配置_动态资源池

2)动态资源池配置——资源池

动态资源池采用树形结构,与Fair Scheduler的队列保持一致,任务只能提交到子池。用户可自定义动态资源池,以将不同任务提交到不同的资源池中。

每一个资源池都有一个权重 (weight)的概念,它定义了资源池资源分配的比例。但并不是说每个资源池都只能获得相应比例的资源。例如,下图中共有三个子池,root.default、root.dev、root.prod,三者的比重相同,理论上应各分得1/3的资源,但假如,当前整个集群只有一个job被提交到了root.dev中,则该job是可以使用整个集群资源的。

下面创建以三个子池——root.default、root.dev、root.users,权重均为1。

CDP yarn 配置资源池 cdh资源队列配置_权重_02

3)动态资源池配置——计划模式

假如规定我们将所有开发测试的job全部提交到root.dev资源池,所有的生产任务全部提交到root.prod资源池。由于我们的离线任务大多放在夜间执行,而开发测试工作主要在白天执行,很显然,root.dev在白天的时候需要更多的资源,root.prod在夜间需要更多的资源。计划模式就能够自动帮助我们在不同的时间段,刷新不同的资源池配置。

(1)创建计划规则

CDP yarn 配置资源池 cdh资源队列配置_开发测试_03

日间计划规则

CDP yarn 配置资源池 cdh资源队列配置_cloudera_04

夜间计划规则

CDP yarn 配置资源池 cdh资源队列配置_动态资源池_05

(2)修改资源池

修改root.dev将dev的日间权重适当调大,此处上调到3。

CDP yarn 配置资源池 cdh资源队列配置_权重_06


按照相同的步骤,将root.users的夜间权重适当调大,也上调至3。

CDP yarn 配置资源池 cdh资源队列配置_动态资源池_07

4)动态资源池配置——放置规则

动态资源池规划完毕后,需要思考的问题就是,如何确定一个job提交后会被防止放置到哪一个资源池中。以下是放置规则

CDP yarn 配置资源池 cdh资源队列配置_cloudera_08

放置规则可以设置多个,从上到下依次校验,只要有一个规则校验成功,该任务就会被放置到该资源池中,后续规则不再校验,此处设置规则如下

5)动态资源池配置——用户限制

用户限制可对具体用户设置同时运行任务数的上限。

CDP yarn 配置资源池 cdh资源队列配置_权重_09

注意:如需采用最严格的资源权限控制,可以在资源池权限配置中为每个用户组配置相应的资源池,然后此处删除所有放置规则,只添加“已在运行时指定”一条放置规则, 并且不勾选自动创建池,此时用户提交任务时必须指定使用的资源池,方法为指定参数

-Dmapreduce.job.queuename=<pool name>

6)刷新动态资源池

动态资源池刷新之后才可生效

CDP yarn 配置资源池 cdh资源队列配置_权重_10