配置容量调度

最近更新时间:2024-09-10 16:48:11

我的收藏

功能介绍

容量调度(Capacity Scheduler)以分层的方式组织资源,可通过多层级的资源限制条件让多用户共享集群资源。

名词解释

配置集:定义在给定时间内处于活动状态的队列之间的资源分配。资源池在不同配置集中的资源量限制相互独立,即可以按照业务分别进行配置,相互不影响。
计划模式:定义配置集何时处于活动状态。
队列映射:队列映射中定义了映射的队列,且用户在提交任务时指定了队列,但是该队列与映射队列不同时:当用户指定的队列为 default 或者开启了覆盖,则会使用映射队列,否则使用用户指定的队列。

操作步骤

新建资源池

1. 登录 EMR 控制台,在集群列表中选择对应的 Hadoop 集群单击详情进入集群详情页。
2. 在集群详情页中选择集群服务 > Yarn 组件卡页右上角操作 > 资源调度进入资源调度页面。
3. 单击资源调度器开关,打开开关后即可进行相关调度器配置。
4. 在调度器编辑页面中,调度策略类型选择容量调度(Capacity Scheduler)并进行容量调度的全局配置。
5. 全局配置支持:标签调度的开启和关闭、队列映射的开启与关闭、容量调度的延迟调度次数等设置。
说明:
标签调度默认关闭,开启后支持管理和设置标签。
队列映射默认关闭,开启后队列映射生效,否则新建映射队列规则仅保存不生效。
6. 在选择调度器类型并保存后,即可对已有队列进行编辑、新建子队列、克隆等操作;也可点击新建队列即可新建对应的调度器类型的队列。
字段与配置项对照表
字段名称
对应参数名称
参数含义
队列名称
yarn.scheduler.capacity.<queue-path>.queues</queue-path>
队列的名称。
标签设置
设置队列可以访问的特定标签。
容量
yarn.scheduler.capacity.<queue-path>.capacity</queue-path>
可以使用的资源大小,同一父队列的子队列容量总和为100,能使用的资源=父队列*容量%。如果该队列需要比这个比例更高的资源,而其他队列又有空闲资源的话,可以占用比这个比例更高的资源。
最大容量
yarn.scheduler.capacity.<queue-path>.maximum-capacity</queue-path>
队列的资源使用上限(百分比)。由于存在资源共享,因此一个队列使用的资源量可能超过其容量,而最多使用资源量可通过该参数限制。
默认标签表达式
yarn.scheduler.capacity.<queue-path>.default-node-label-expression</queue-path>
当资源请求未指定节点标签时,应用将被提交到该值对应的分区。默认情况下,该值为空,即应用程序将被分配没有标签的节点上的容器。
用户最小容量
yarn.scheduler.capacity.<queue-path>.minimum-user-limit-percent</queue-path>
每个用户最低资源保障(百分比)。任何时刻,一个队列中每个用户可使用的资源量均有一定的限制。当一个队列中同时运行多个用户的应用程序时,每个用户的使用资源量在一个最小值和最大值之间浮动,其中,最小值取决于正在运行的应用程序数目,而最大值则由 minimum-user-limit-percent 决定。
用户资源因子
yarn.scheduler.capacity.<queue-path>.user-limit-factor</queue-path>
每个用户最多可使用的资源量(百分比)。例如,假设该值为30,则任何时刻,每个用户使用的资源量不能超过该队列容量的30%。
分配 Container 最大内存数量
yarn.scheduler.capacity.<queue-path>.maximum-allocation-mb</queue-path>
每个 container 的最大内存值,这个配置会覆盖 yarn.scheduler.maximum-allocation-mb 值,但是该值必须小于等于系统的 yarn.scheduler.maximum-allocation-mb 的值。
Container 最大 vCore 数量
yarn.scheduler.capacity.<queue-path>.maximum-allocation-vcores</queue-path>
每个 container 的最大核数,这个配置会覆盖 yarn.scheduler.maximum-allocation-vcores 值,但是该值必须小于等于系统的 yarn.scheduler.maximum-allocation-vcores 的值。
队列状态
yarn.scheduler.capacity.<queue-path>.state</queue-path>
队列的状态。可以是正在运行或已停止。如果队列处于停止状态,则无法向其自身或其任何子队列提交新的应用程序。
最大应用数 Max-Applications
yarn.scheduler.capacity.<queue-path>.maximum-applications</queue-path>
系统中可同时处于活动状态(正在运行和挂起)的最大应用程序数。
最大 AM 比例
yarn.scheduler.capacity.<queue-path>.maximum-am-resource-percent</queue-path>
群集中可用于运行应用程序主机的最大资源百分比-控制并发活动应用程序的数量。
队列优先级
yarn.scheduler.capacity.root.<leaf-queue-path>.default-application-priority</leaf-queue-path>
配置队列的优先级,默认为0,设置值越大,优先级越高。
提交访问控制
yarn.scheduler.capacity.root.<queue-path>.acl_submit_applications
可以提交 apps 到队列的用户的列表。
管理访问控制
yarn.scheduler.capacity.root.<queue-path>.acl_administer_queue
可以管理队列的用户的列表。
node-locality-delay
yarn.scheduler.capacity.node-locality-delay
保证任务本地化执行,可以延迟调度的次数。如果值为 -1,将禁用延迟调度。
multiple-assignments-enabled
yarn.scheduler.capacity.per-node-heartbeat.multiple-assignments-enabled
是否允许在一次 NodeManager 心跳中分配多个容器。默认为 true。仅支持 Hadoop3.x 版本。
maximum-container-assignments
yarn.scheduler.capacity.per-node-heartbeat.maximum-container-assignments
如果 multiple-assignments-enabled 为 true,在一次 NodeManager 心跳中可以分配的最大容器数量。如果值为-1,将禁用该参数。仅支持 Hadoop3.x 版本。
resource-calculator
yarn.scheduler.capacity.resource-calculator
用于比较调度程序中的资源的 ResourceCalculator 实现。可输入 org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator 或 org.apache.hadoop.yarn.util.resource.DominantResourceCalculator。DefaultResourceCalculator 为默认值,只使用内存;而 DominantResourceCalculator 使用多维资源,如内存、CPU 等。

配置队列映射

1. 单击策略设置中的队列映射即可进入队列映射页面,单击新建队列映射即可进行新建队列映射。
2. 映射类型支持用户和用户组维度,用户维度支持特定用户选择。
3. 是否覆盖用户指定队列 全局维度默认关闭,需全局维度开启生效;假如用户在队列映射中定义了映射的队列,且用户在提交任务时指定了队列,但是该队列与映射队列不同时:当用户指定的队列为 default 或者开启了覆盖,则会使用映射队列,否则使用用户指定的队列。

配置计划模式

1. 单击策略设置中的计划模式即可进入计划模式页面,单击新建计划模式即可进行计划模式的新建。 配置集状态用于标记计划模式是否开启,默认为开启状态,若不需要使用自定义计划模式但仍想保留配置集,可将配置集状态设置为关闭。
2. 在新建计划模式中选择/填写配置集、名称和计划有效时间。

示例配置集

1. 登录 EMR 控制台,在集群列表中选择对应的 Hadoop 集群单击详情进入集群详情页。
2. 在集群详情页中选择集群服务 > Yarn 组件卡页右上角操作 > 资源调度进入资源调度页面。
3. 单击资源调度器开关,调度器类型选择 公平调度器(Fair Scheduler)。
4. 单击新建队列,根据实际需求进行配置。
5. 在资源调度页中选择计划模式>新建计划模式,根据业务需要调整计划有效时间。
说明
如果 EMR 集群配置了定时扩容,建议将计划模式的计划有效时间设置在定时扩容之后。

6. 在资源调度页中选择资源池,在配置集下拉选项中,选择一个配置集。
说明
资源池在不同配置集中的资源量限制相互独立,即可以按照业务分别进行配置,相互不影响。
7. 配置集下选择之前创建的队列,按照业务进⾏资源量限制的调整。
8. 队列调整完后,单击部署生效,即可使设置生效。

示例标签调度

1. 登录 EMR 控制台,在集群列表中选择对应的 Hadoop 集群单击详情进入集群详情页。
2. 在集群详情页中选择集群服务 > Yarn 组件卡页右上角操作 > 资源调度进入资源调度页面。
3. 单击资源调度器开关,调度器类型选择 容量调度(Capacity Scheduler)。
4. 单击标签调度开关,打开标签调度后单击标签管理,进入标签管理页。
5. 单击新建标签,填写标签名称,并根据需要设置标签类型和该标签绑定的节点。
6. 标签设置完成后,单击确认保存,即可在队列中编辑查看该标签的资源队列。
7. 在队列列表页中单击新建队列,根据业务需要选择标签、容量、最大容量等。
说明
资源池在不同标签中的容量、最大容量相互独立,即可以按照业务分别进行配置,相互不影响。
8. 资源池设置完后,单击部署生效,即向后台提交了部署生效任务。
注意
由于 ResourceManager 重启属于高危操作,单击部署生效时如果提示会重启 ResourceManager,请在调度历史中查看操作是否成功,并在角色管理中查看 ResourceManager 健康状态是否良好。

部署生效

1. 涉及所有参数调整时,均需部署生效,未点击部署生效仅保留修改值且不生效。
2. 支持查看具体待生效明细,粒度到配置项参数值。
3. 调度器切换及队列增删需重新启动 ResourceManager(包括开关标签调度),而非调度器切换仅涉及队列等策略调整及标签调度管理标签生效,无需重新启动 ResourceManager;重启 ResourceManager 可能导致服务不可用,请谨慎操作。
4. 部署生效时,整体校验子父队列关系,子队列累计和需等于100%;提交时校验。