概述
节点标签是对节点分组,应用可以指定在哪里运行。
先在只支持node分区:
1.一个node 只能有一个标签,默认标签为default
2.用户需要配置一个分区可以有多少资源
3.有2种节点分区
3.1 独占的,当准确的匹配node分区的时候
3.2非独占,就是没有准确的node 分区,被分配到默认分区。
用户可以设置node标签,可以被所有的队列访问,一个应用只能使用node标签下的子节点。
特性
node标签支持以下一些特性:
- 分组集群:每个node可以关联一个标签,所以整个集群会被分为几个分区。
- node标签在队列的ACL:用户在每个队列上设置node标签,这样的话每个队列只能访问一部分节点
- 指定队列能够访问资源的百分比
- 请求时可以指定node标签,若找不到node标签会被分配到default分区。
- 可操作性:
- RM重启node标签映射也会被恢复
- 更新node标签,admin可以更新node标签,当rm运行的时候。
- 有3中方式从NM映射到node标签
- 中心化:通过CLI,REST,RPC完成node 到标签的映射
- 分布式:可以通过配置NM中的node标签提供方来完成node 到标签的映射,目前有2中方式:1.脚本,2。配置
- 延迟中心化:可以通过配置RM中的node标签提供方来完成node 到标签的映射。
配置
RM启动node标签
在yarn-site.xml中设置
属性 | 值 |
---|---|
yarn.node-labels.fs-store.root-dir | hdfs://namenode:port/path/to/store/node-labels/ |
yarn.node-labels.enabled | true |
yarn.node-labels.configuration-type | “centralized”, “delegated-centralized” , “distributed”. Default value is “centralized”. |
注意: |
- 保证yarn.node-labels.fs-store.root-dir被窗前,并且RM有权限访问
- 如果需要保存在本地文件系统路径设置为file:///home/yarn/node-label
增加删除node标签
- 增加一个node标签列表
- 执行yarn rmadmin -addToClusterNodeLabels "label_1(exclusive=true/false),label_2(exclusive=true/false)"
- exclusive,默认为true
- 运行yarn cluster --list-node-labels检查
删除node标签
- 删除集群node标签
- 删除 yarn rmadmin -removeFromClusterNodeLabels "
- 如果已经被分配到队列,那么无法删除标签
- 为了验证node标签是否被删除,运行yarn cluster --list-node-labels
增加node到标签的映射
- 中心化配置:
- 执行yarn rmadmin -replaceLabelsOnNode “node1[:port]=label1 node2=label2” [-failOnUnknownNodes].把node1映射到label1,node2映射到label2
- 分布式node标签映射:
属性 | 值 |
---|---|
yarn.node-labels.configuration-type | 如:distributed |
yarn.nodemanager.node-labels.provider | 如果为distributed,用户可以配置config,script或者class。 |
yarn.nodemanager.node-labels.resync-interval-ms | 定时从RM同步标签 |
yarn.nodemanager.node-labels.provider.fetch-interval-ms | 定期从node标签提供者获取标签 |
yarn.nodemanager.node-labels.provider.fetch-timeout-ms | 如果提供者是script,如果配置了超时,超时的时候会中断标签获取 |
yarn.nodemanager.node-labels.provider.script.path | 脚本位置 |
yarn.nodemanager.node-labels.provider.script.opts | 脚本参数 |
yarn.nodemanager.node-labels.provider.configured-node-partition | 如果提供者是配置,从这个 配置中回去分区标签 |
- 延迟中心化配置
属性 | 值 |
---|---|
yarn.node-labels.configuration-type | delegated-centralized |
yarn.resourcemanager.node-labels.provider | 延迟中心化,管理员需要配置类名用来获取节点标签,org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsMappingProvider |
yarn.resourcemanager.node-labels.provider.fetch-interval-ms | 定期从node标签提供者获取node标签 |
配置调度器的node标签
- 容量调度器配置
yarn.scheduler.capacity. |
设置队列可以访问默认分区的容量 |
yarn.scheduler.capacity. |
配置每个队列可以访问的node标签,如“hbase,storm” |
yarn.scheduler.capacity. |
设置队列可以访问标签分区中的容量百分比 |
yarn.scheduler.capacity. |
指定标签,队列最大可访问容量 |
yarn.scheduler.capacity. |
设置默认的标签,如果没有指定标签,会被分配到该标签 |
如队列结构:
root
一共有5个节点(h1…h5),每个节点,有24G内存,24核。
有如下配置:
yarn.scheduler.capacity.root.queues=engineering,marketing,sales
yarn.scheduler.capacity.root.engineering.capacity=33
yarn.scheduler.capacity.root.marketing.capacity=34
yarn.scheduler.capacity.root.sales.capacity=33
yarn.scheduler.capacity.root.engineering.accessible-node-labels=GPU
yarn.scheduler.capacity.root.marketing.accessible-node-labels=GPU
yarn.scheduler.capacity.root.engineering.accessible-node-labels.GPU.capacity=50
yarn.scheduler.capacity.root.marketing.accessible-node-labels.GPU.capacity=50
yarn.scheduler.capacity.root.engineering.default-node-label-expression=GPU
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2018-06-28 firewall防火墙使用