有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

功能介绍

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

操作步骤

新建资源池

1. 登录 EMR 控制台,在集群列表中选择对应的 Hadoop 集群单击详情进入集群详情页。
2. 在集群详情页中选择集群服务 > Yarn 组件卡页右上角操作 > 资源调度进入资源调度页面。


3. 单击资源调度器开关,打开开关后即可进行相关调度器配置。
4. 新建 Capacity Scheduler 调度策略类型选择 Capacity Scheduler 即可进入 Capacity Scheduler 的配置页面,单击新增资源池即可新建资源池。可对已有资源池进行编辑、新建子池、克隆等操作;也可单击默认设置进行设置容量调度的延迟调度次数。


新建资源池:



字段与配置项对照表
字段名称
对应参数名称
参数含义
资源池名称
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. 是否覆盖用户指定队列 默认关闭,假如用户在资源池映射中定义了映射的队列,且用户在提交任务时指定了队列,但是该队列与映射队列不同时:当用户指定的队列为 default 或者开启了覆盖,则会使用映射队列,否则使用用户指定的队列。

示例标签调度

1. 登录 EMR 控制台,在集群列表中选择对应的 Hadoop 集群单击详情进入集群详情页。
2. 在集群详情页中选择集群服务 > Yarn 组件卡页右上角操作 > 资源调度进入资源调度页面。
3. 单击资源调度器开关,调度器类型选择 Capacity Scheduler。
4. 单击标签调度开关,打开标签调度后单击标签管理,进入标签管理页。


5. 单击新建标签,填写标签名称,并根据需要设置标签类型和该标签绑定的节点。


6. 标签设置完成后,单击指令生效,即可在资源池中编辑查看该标签的资源队列。


7. 在资源调度页中单击新建资源池,根据业务需要选择标签、容量、最大容量等。
说明
资源池在不同标签中的容量、最大容量相互独立,即可以按照业务分别进行配置,相互不影响。

8. 资源池设置完后,单击部署生效,即向后台提交了部署生效任务。
注意
由于 ResourceManager 重启属于高危操作,单击部署生效时如果提示会重启 ResourceManager,请在调度历史中查看操作是否成功,并在角色管理中查看 ResourceManager 健康状态是否良好。