YARN标签调度
YARN标签调度支持对集群节点设置Node Label,并在Capacity Scheduler队列中配置可调度标签,实现不同类型作业在物理资源层面的隔离调度。适用于GPU节点、独立计算资源池、多租户资源隔离等场景。
功能概述
YARN标签调度通过标签将Core节点和Task节点划分为不同的资源分区,并将标签分区授权给指定队列使用。提交到队列的作业可根据队列配置调度到对应标签节点上运行。
开启标签调度后,系统默认创建DEFAULT_PARTITION标签,未绑定自定义标签的节点归属该默认分区。用户可以根据业务需要创建自定义标签,将不同节点绑定到不同标签分区,并在YARN队列管理中配置队列可访问的调度标签、默认标签表达式和允许提交用户。
常见使用场景如下:
- 异构资源隔离:将GPU节点绑定到GPU标签,仅允许指定队列调度GPU作业。
- 业务资源隔离:将不同业务线使用的Core节点或Task节点划分到不同标签分区,降低资源竞争。
- 多租户队列管理:结合队列容量配置和允许提交用户,控制不同用户或团队的资源使用范围。
说明:YARN标签调度目前仅支持Capacity Scheduler调度类型。
前提条件
- 已创建BMR集群,且集群状态为运行中。
- 集群类型为Hadoop及Hadoop-bos 3.7.4 及以上支持
- 集群已安装并启用YARN服务。
- 集群YARN调度类型为Capacity Scheduler。
- 集群中存在可配置标签的Core节点或Task节点。
开启标签调度
- 选择产品服务>数据分析>MapReduce>集群进入集群列表页面。
- 点击目标集群名称,进入集群详情页面。
- 在左侧导航中选择资源管理,进入资源管理页面。
- 在YARN资源管理页面中,进入YARN标签管理页签。
- 打开标签调度开关。
- 在确认弹窗中确认开启标签调度。
开启后,系统自动创建DEFAULT_PARTITION标签,并将未绑定其他标签的Core节点和Task节点归属到DEFAULT_PARTITION分区。
注意:若当前集群调度类型不是Capacity Scheduler,标签调度开关不可开启。需先在YARN队列管理中将调度类型切换为Capacity Scheduler。
管理标签
新建标签
- 在YARN标签管理页面,点击新建标签。
- 配置标签名称、标签类型和关联节点。
- 点击确定完成标签创建。
- 返回标签列表后,点击部署生效,将标签配置下发到集群。
表一 新建标签配置项说明
| 配置项 | 配置项说明 |
|---|---|
| 标签名称 | 必填。标签名称由字母、数字、下划线(_)、中划线(-)组成,不能以下划线或中划线开头,长度为1-255个字符。 |
| 标签类型 | 必填。支持独占和非独占两种类型。独占标签下的节点资源只能被声明使用该标签的队列使用;非独占标签下的节点资源优先给声明使用该标签的队列使用,当该标签无资源需求时,可被DEFAULT_PARTITION分区任务使用。 |
| 关联节点 | 必填。选择需要绑定到该标签的Core节点或Task节点。一个节点只能关联一个标签,若节点已关联其他标签,再次关联新标签时,原标签关系将被替换。 |
说明:DEFAULT_PARTITION为系统默认标签,不支持编辑和删除。
编辑标签
- 在YARN标签管理页面,找到目标标签。
- 点击操作列中的编辑。
- 修改标签关联的节点
- 点击确定保存修改。
- 点击部署生效,将修改后的标签配置下发到集群。
从标签中移除的节点将重新归属到DEFAULT_PARTITION分区。
删除标签
- 在YARN标签管理页面,找到目标标签。
- 点击操作列中的删除。
- 在确认弹窗中点击删除。
- 点击部署生效,将删除操作下发到集群。
删除标签后,该标签关联的节点将重新归属到DEFAULT_PARTITION分区。
注意:若标签已被队列默认标签表达式使用,需先调整相关队列配置,再删除该标签。
同步标签
当用户通过控制台以外的方式修改了YARN标签配置时,可在YARN标签管理页面点击同步标签,将集群当前标签信息同步到控制台页面展示。
同步后可查看标签名称、标签类型、关联节点、总核数和总内存等信息。
配置队列标签调度
开启标签调度并完成标签配置后,可在YARN队列管理中为队列配置可调度标签。
- 在集群详情页左侧导航中选择资源管理。
- 在YARN资源管理页面中,进入YARN队列管理页签。
- 在队列列表中选择目标队列,点击操作列中的编辑。如需新增队列,可点击目标资源池操作列中的创建子队列。
- 配置队列的调度标签、默认标签表达式和允许提交用户。
- 点击确定保存队列配置。
- 点击同步集群,将队列配置同步到集群生效。
标签调度开启后,队列管理页面支持按标签分区查看队列资源配置。每个标签分区下,同一父队列的子队列资源份额总和需为100%。
表二 队列标签调度配置项说明
| 配置项 | Hadoop YARN对应参数项 | 配置项说明 |
|---|---|---|
| 调度标签 | yarn.scheduler.capacity. |
队列可访问的标签分区。队列只能将作业调度到已授权访问的标签分区中。 |
| 默认标签表达式 | yarn.scheduler.capacity. |
当应用提交时未指定标签分区,将使用队列默认标签表达式进行调度。若未配置默认标签表达式,则默认使用DEFAULT_PARTITION分区资源。 |
| 允许提交用户 | yarn.scheduler.capacity. |
可以向该队列提交应用的用户。支持选择一个或多个用户。 |
| 资源份额 | yarn.scheduler.capacity. |
队列在当前标签分区下占用的资源份额。相同父队列下的子队列资源份额总和需为100%。 |
| 最大资源份额 | yarn.scheduler.capacity. |
队列在当前标签分区下可使用资源的最大百分比。 |
| 队列运行状态 | yarn.scheduler.capacity. |
队列运行状态。running表示允许提交应用,stopped表示不允许向该队列及其子队列提交新的应用。 |
提交作业到指定队列
队列标签配置生效后,用户提交YARN作业时可通过队列参数将作业提交到目标队列。作业实际调度节点由队列可访问标签、默认标签表达式及应用自身提交参数共同决定。
Spark作业示例:
1spark-submit --master yarn \
2 --deploy-mode cluster \
3 --queue <queue-name> \
4 --class <main-class> \
5 <application-jar>
MapReduce作业示例:
1hadoop jar <application-jar> \
2 <main-class> \
3 -D mapreduce.job.queuename=<queue-name> \
4 <input-path> \
5 <output-path>
说明:不同计算引擎指定队列和标签表达式的参数可能不同,具体以对应组件的提交命令为准。
查看标签资源
在YARN标签管理页面,可查看各标签分区的资源信息。
表三 标签列表字段说明
| 字段 | 字段说明 |
|---|---|
| 标签名称 | 标签分区名称。DEFAULT_PARTITION为系统默认标签。 |
| 标签类型 | 标签分区类型,包括独占和非独占。 |
| 关联节点 | 当前标签关联的Core节点或Task节点数量。 |
| 总核数 | 当前标签关联节点的YARN可配置总CPU核数。 |
| 总内存 | 当前标签关联节点的YARN可配置总内存。 |
| 操作 | 支持编辑和删除。DEFAULT_PARTITION不支持编辑和删除。 |
说明:扩容节点时,新增节点默认归属DEFAULT_PARTITION分区;缩容节点时,对应标签的分区不会变化;仅有在释放节点的时候对应标签分区会变化。
注意事项
- 标签配置新增、编辑或删除后,需点击部署生效,配置才会下发到集群并生效。
- 标签调度开启期间,不支持直接切换到Fair Scheduler。需先关闭标签调度,再切换调度类型。
- 一个节点只能关联一个标签。节点被绑定到新标签后,将自动解除与原标签的关联。
- DEFAULT_PARTITION为系统默认标签,不支持编辑或删除。
- 标签删除后,原关联节点将归属DEFAULT_PARTITION分区。
- 队列按标签分区配置资源时,同一父队列下的子队列资源份额总和必须为100%,否则同步集群会失败。
- 建议先完成标签分区规划,再配置队列调度标签,避免频繁调整生产队列资源。
评价此篇文章
