CH8 YARN节点标签

概述

节点标签是对节点分组,应用可以指定在哪里运行。
先在只支持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..capacity 设置队列可以访问默认分区的容量
yarn.scheduler.capacity..accessible-node-labels 配置每个队列可以访问的node标签,如“hbase,storm”
yarn.scheduler.capacity..accessible-node-labels. 设置队列可以访问标签分区中的容量百分比
yarn.scheduler.capacity..accessible-node-labels. 指定标签,队列最大可访问容量
yarn.scheduler.capacity..default-node-label-expression 设置默认的标签,如果没有指定标签,会被分配到该标签

如队列结构:

root

graph TD A[root] --> B(enginer) A[root] --> C(sales) A[root] --> D(marketing)

一共有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
原文地址:https://www.cnblogs.com/Amaranthus/p/14943688.html