Yarn标签调度--HDP测试

hadoop版本从2.7.2版本开始 新增标签调度功能。

标签调度功能:可以给节点设置标签 让作业任务调度到这个设置的标签节点。

列入:

某个任务需要用到gpu资源,而gpu并非在每个节点上都有,通过对节点设置标签,可以使作业任务正确调度到含gpu资源的节点上,确保作业任务正确运行。

接下来我们开始配置这一个功能

首先我们采用的环境版本—我这边采用HDP集群 当然开源方案一样可以参考

组件

版本

JDK

1.8.0_281

Hadoop

3.1.1.3.1

【开始配置】

首先我们启动标签功能

在yarn-site中加入如下参数:
<property>
  <name>yarn.node-labels.enabled</name>
  <value>true</value>
</property>
<property>
  <name>yarn.node-labels.fs-store.root-dir</name>
  <value>hdfs://migratecluster/yarn/node-labels</value>
</property>
注意其中migratecluster需要换成自己的nameservices具体参数可以在hdfs-site、core-site配置文件中查找dfs.internal.nameservices
还需要注意我这边使用的是hdp默认的这个hdfs目录
yarn.node-labels.fs-store.root-dir=/system/yarn/node-labels
解释:
配置项yarn.node-labels.enabled表示是否启用标签功能。
yarn.node-labels.fs-store.root-dir表示标签的存储位置,可以是本地文件,也可以是hdfs上的存储路径(文件目录会自动进行创建)
对于HDP集群来讲已经有这个按钮直接enable开启即可~
十分方便
保存重启yarn服务
重启完成后
就该在集群中添加标签了
添加标签可以直接使用yarn命令 添加一个gpu标签— 这步需要yarn用户执行
yarn rmadmin -addToClusterNodeLabels "gpu(exclusive=true)"
exclusive表示是否独占,具体可以理解为,当该标签分区下的节点有空闲资源时,是否可以共享给default分区的任务使用。
true表示独占,即不共享,资源仅分配给具有该标签的任务使用。
false表示非独占,即可以共享。
添加标签前,rm的界面上,可以看到只有DEFAULT标签(如下图所示)
从上图可以看出来,gpu这个标签对应的分区中都还没有活跃的NM节点。
NM节点关联标签
完成标签的添加后,接下来就是给指定的节点关联到不同的标签上,也就是将集群的节点按标签划分成不同的节点分区。
yarn rmadmin -replaceLabelsOnNode "172.16.121.249:8042=gpu"
执行上面的命令后,再来看看rm的界面,可以看到gpu的标签,有了一个活跃的节点,而DEFAULT标签中则少了一个活跃节点。
从NM节点列表的界面中,也可以看到该节点有了对应的标签信息。
同时,队列的界面中,也多出了对应的标签信息,所有队列均会出现在所有标签中。
但是gpu标签下还未设置对应标签的使用容量。
设置队列可访问的标签与容量
注意:HDP的Yarn Queue Manager界面—也可以 推荐用HDP Yarn Manager添加
推荐Yarn Queue Manager添加方法
一共注意下面3个框框中的东西 一个是启动标签队列 选择标签队列 还有就是默认提交这个队列为标签队列
保存后会自动刷新

配置修改方法: 不推荐手动添加的方法
搜索配置:capacity-scheduler.xml
加入如下配置
<!-- default队列 -->
<property>
<name>yarn.scheduler.capacity.root.default.accessible-node-labels</name>
<value>gpu</value>
<description>default队列应用可用的节点标签</description>
</property>:q:q
<property>
<name>yarn.scheduler.capacity.root.default.default-node-label-expression</name>
<value>gpu</value>
<description>default队列应用默认节点标签</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.accessible-node-labels.gpu.capacity</name>
<value>100</value>
<description>default队列对gpu标签节点可用的百分比</description>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.accessible-node-labels.gpu.maximum-capacity</name>
<value>100</value>
<description>default队列对gpu标签节点最大的百分比</description>
</property>
<!-- root 队列 -->
<property>
<name>yarn.scheduler.capacity.root.accessible-node-labels.gpu.capacity</name>
<value>100</value>
<description>root队列对gpu标签节点最大的可用百分比</description>
</property>
HDP参数如下:
yarn.scheduler.capacity.root.default.accessible-node-labels=gpu
yarn.scheduler.capacity.root.default.default-node-label-expression=gpu
yarn.scheduler.capacity.root.default.accessible-node-labels.gpu.capacity=100
yarn.scheduler.capacity.root.default.accessible-node-labels.gpu.maximum-capacity=100
yarn.scheduler.capacity.root.accessible-node-labels.gpu.capacity=100
参数含义:
1. yarn.scheduler.capacity.root.default.accessible-node-labels=gpu
    * 含义: 设置 default 队列可以访问的节点标签为 "gpu"。
2. yarn.scheduler.capacity.root.default.default-node-label-expression=gpu
    * 含义: 设置 default 队列应用的默认节点标签为 "gpu"。
3. yarn.scheduler.capacity.root.default.accessible-node-labels.gpu.capacity=100
    * 含义: 设置 default 队列可访问 "gpu" 标签节点的容量百分比为 100%。
4. yarn.scheduler.capacity.root.default.accessible-node-labels.gpu.maximum-capacity=100
    * 含义: 设置 default 队列对 "gpu" 标签节点的最大可用容量百分比为 100%。
5. yarn.scheduler.capacity.root.accessible-node-labels.gpu.capacity=100
    * 含义: 设置 root 队列可访问 "gpu" 标签节点的容量百分比为 100%。

配置完成后,通过命令刷新队列使配置生效,在界面中可以看到如下信息:
冒烟测试
提交hive任务指定标签
set mapreduce.job.node-label-expression=gpu;
set mapreduce.job.queuename=defalt;
一开始提交不上注意这个参:
将标签与队列映射
yarn.scheduler.capacity..capacity 指定default分区的队列容量
yarn.scheduler.capacity..accessible-node-labels
配置队列可以访问的标签,多个以逗号分隔。
注:没有标签的节点,所有队列均可以访问。如果不指定,则继承父队列的。如果想队列只能访问没有标签的节点,设置此值为空格。
yarn.scheduler.capacity..accessible-node-labels..capacity 配置队列可以访问的分区容量
yarn.scheduler.capacity..accessible-node-labels..maximum-capacity 配置队列可以访问的分区绝对最大容量
yarn.scheduler.capacity..default-node-label-expression 用于配置默认分区 如果提交任务到该队列时没有指定标签,则默认为此值。默认为空,也就是不指定标签将会运行在没有标签的节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/870989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光伏规约转换器,光伏并网,逆变器配套锦浪。

光伏规约转换器&#xff0c;光伏并网&#xff0c;逆变器配套锦浪&#xff0c;科士达&#xff08;4针航插&#xff09;&#xff0c;首航&#xff08;16针&#xff09;线束。 光伏规约转换器&#xff0c;光伏并网&#xff0c;逆变器配套锦浪。

网工内推 | 网络运维、云计算工程师,NP以上认证,平均薪资10K

01 网络运维 &#x1f537;岗位职责 1、至少3年以上的网络运维相关工作经验; 2、熟悉VLAN、STP、OSPF、RIP、BGP等网络技术; 3、熟悉IPsec、SSL等VPN技术; 4、熟悉主流网络安全厂商的各种产品; 5、精通TCP/IP协议&#xff0c;熟悉主流网络产品设备的调试、配置方法: 6、有…

某某会员小程序后端性能优化

背景 某某会员小程序后台提供开放平台能力&#xff0c;为三方油站提供会员积分、优惠劵等api。当用户在油站加油&#xff0c;油站收银会调用我们系统为用户发放积分、优惠劵等。用户反馈慢&#xff0c;三方调用发放积分接口性能极低&#xff0c;耗时30s&#xff1b; 接口情况…

ARM平台实现Docker容器技术

什么是Docker&#xff1f; &#xff08;1&#xff09;Docker的架构 Docker是一个开源的应用容器引擎&#xff0c;让开发者可打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的Linux或Windows机器上&#xff0c;亦可实现虚拟化。容器是完全使用沙…

GESP 2023年12月C++二级真题

参考程序1&#xff1a; #include<iostream> using namespace std;int first,second; int m,n; int sum 0;int fn(int n) {if(n1) {return first;} else if (n2) {return second;} else {return fn(n-1)fn(n-2);} } int main() {cin>>first>>second;cin>…

LeetCode 374, 128, 17

目录 374. 猜数字大小题目链接标签思路代码 128. 最长连续序列题目链接标签Set思路代码 Sort思路代码 17. 电话号码的字母组合题目链接标签思路代码 374. 猜数字大小 题目链接 374. 猜数字大小 标签 二分查找 交互 思路 看到本题的标签 交互 感觉有些奇怪&#xff0c;交互…

[Day 27] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

區塊鏈的跨鏈技術 介紹 區塊鏈技術自誕生以來&#xff0c;已經在金融、供應鏈管理、醫療健康等多個領域取得了顯著的成就。然而&#xff0c;隨著不同區塊鏈平台的出現&#xff0c;如比特幣、以太坊、Hyperledger等&#xff0c;如何在不同區塊鏈之間進行數據和資產的互通成為了…

ubuntu22.04 编译freetype动态库

#-------------------------------------------------------------------- # ubuntu22.04 编译freetype动态库 #-------------------------------------------------------------------- 由于笔者在一项目中需要调用某几种特殊的字体&#xff0c;需要用到freetype&#xff0c;就…

一个使用Go语言和现代Web技术构建跨平台桌面应用程序开源项目

大家好&#xff0c;今天给大家分享一个使用Go语言和现代Web技术构建跨平台桌面应用程序开源项目Wails。 Wails是一个允许开发者使用Go和Web技术编写桌面应用程序的项目。 它被设计为Go的快速且轻量的Electron替代品&#xff0c;旨在提供一个平台&#xff0c;让开发者可以利用Go…

unity使用 MQTT复现plant simulate仿真

unity使用 MQTT复现plant simulate仿真 一、plant simulate端配置 1、plant simulate MQTT组件配置&#xff0c;该组件在类库的信息流类目下&#xff0c;端口不变&#xff0c;填写ip即可&#xff1b; 2、设备配置界面&#xff0c;在控件入口和出口处各挂一个脚本&#xff0c;…

uniapp uni-combox 数据源使用对象,选择后获取对应项的ID,可指定自定义的balbel,value

背景&#xff1a;uniApp中uni-combox数据源只支持接受一维数组&#xff0c;无法对每个选项指定具体的id&#xff0c;更无法实现选中后返回id&#xff0c;对原有的源码进行改造后如下&#xff1a; <template><view class"uni-combox" :class"border ?…

文件读写操作之c语言、c++、windows、MFC、Qt

目录 一、前言 二、c语言文件读写 1.写文件 2.读文件 三、c文件读写 1.写文件 2.读文件 四、windows api文件读写 1.写文件 2.读文件 五、MFC文件读写 1.写文件 2.读文件 六、Qt文件读写 1.写文件 2.读文件 七、总结 一、前言 我们在学习过程中&#xff0c…

面向对象机考指南

目录 Eclipse使用 调字体大小 Ptg to JavaBean 解决控制台消失问题 第三题大题 控制台 Eclipse使用 调字体大小 Window —> Preferences 搜索font 点击Color and Fonts 找到Java 展示字体 这个这个 即可调节字体大小 Ptg to JavaBean 生成 空参构造 带参构造 gett…

C++基础(一)

目录 1.不同版本的hello word&#xff01; 2.namespace和&#xff1a;&#xff1a;域作用限定符以及using 2.1 namespace 2.2&#xff1a;&#xff1a; 2.3using用于展开域 3.C输入和输出 4.缺省参数 5.重载 6.引用 6.1引用介绍 6.2 引用的特性 注意&#xff1a; 6.4 c…

win11用户由中文名改为英文名

目录 前情提要 一喜一悲&#xff1a;找回“消失”的文件&#xff0c;却失去新建文件的权限。 找回“消失”的文件 ​编辑 失去新建文件的权限 核心问题&#xff1a;怎么解决右键只建立文件夹&#xff1f; 弯路1&#xff1a;获取管理员权限 弯路2&#xff1a;获取管理员权…

Linux基础(权限)+mysql(函数)+初始shell

[rootcentos ~]# whereis test.c test: /usr/bin/test /usr/share/man/man1/test.1.gz /usr/share/man/man1p/test.1p.gz [rootcentos home]# zip -r my.zip lesson1 将目录设为zip unzip my.zip -d xxxxxx 可指定要减压到的位置。 tar [-cxtzjvf] 文件与目录 .... 参数&…

python自动化之用flask库写一个登陆接口(代码示例)

用到的库&#xff1a; 1、flask&#xff08;写接口&#xff09; 2、cerberus&#xff08;校验数据&#xff09; 实现效果&#xff1a;输入账号和密码&#xff0c;校验数据类型是否是字符串&#xff0c;如果是&#xff0c;返回登陆成功&#xff1b;如果不是&#xff0c;返回数…

Kotlin 中 is 关键字的作用与智能类型转换

联系我 Kotlin 中 is 关键字的作用与智能类型转换 在Kotlin编程语言中&#xff0c;is关键字用于类型检查&#xff0c;它相当于Java中的instanceof操作符。类型检查是确保一个对象是否属于某个特定类型的过程&#xff0c;而Kotlin在类型检查的基础上还提供了智能类型转换功能&…

UnityHub 无法添加模块问题

文章目录 1.问题描述2.问题解决 1.问题描述 在Hub中无法添加模块 2.问题解决 1、点击设置 2、设置版本安装位置 可以发现installs的安装位置路径设置不是unity安装位置&#xff0c;这里我们更改成自己电脑unity安装位置的上一级路径 添加模块正常&#xff1a;

EtherCAT主站IGH-- 14 -- IGH之fsm_coe.h/c文件解析

EtherCAT主站IGH-- 14 -- IGH之fsm_coe.h/c文件解析 0 预览一 该文件功能`coe_fsm.c` 文件功能函数预览二 函数功能介绍1. `ec_fsm_coe_dict_start`2. `ec_fsm_coe_dict_request`3. `ec_fsm_coe_dict_check`4. `ec_fsm_coe_dict_response`5. `ec_fsm_coe_dict_response_data`6.…