前言:
基于标签的调度解决的核心需求是实现部分资源的完全隔离,以及由此基础之上的各个资源池之间的资源互助,最终达到隔离并且弹性的计算形态。
该特性开发现状:
最新版本2.8.x:
1.不支持标签表达式,如:&&,|,*
2.资源共享方式不实用,如:2.8.x的模式是labeled资源池向default资源池共享资源。
3.user-limit限制不可用,如:在队列中用户所能使用的资源不受当前活跃用户数限制。
4.BUG,如:队列可同时运行am限制计算错误,队列总资源显示错误
如何配置:
- 在hdfs上创建用于保存label相关数据的目录(相关数据后期有Patch改为用zk存储)。
- hdfs dfs -mkdir /xxx/xxx/node-label/
- hdfs dfs -chown yarn:yarn /xxx/xxx/node-label/
- hdfs dfs -chmod 700 /xxx/xxx/node-label/
- 在yarn-site.xml文件中配置:
-
yarn.node-labels.enabled=true
-
yarn.node-labels.fs-store.root-dir=/xxx/xxx/node-label
-
yarn.resourcemanager.scheduler.class=
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
-
- 配置capacity-scheduler.xml(后面详解)
如何管理标签:
添加标签:
yarn rmadmin -addToClusterNodeLabels "<label1>(exclusive=<true|false>),<label2>(exclusive=<true|false>)"
说明:exclusive是指该标签管理的资源是否允许分享资源给default分区的任务。
查看添加的标签:
yarn cluster --list-node-labels
给机器添加标签:
yarn rmadmin -replaceLabelsOnNode "<node1>:<port>=<label1> <node2>:<port>=<label2>"
说明:1.node1处必须填写域名。2.如果“=label1“处为空,即表示重设机器标签为空。3.port处为空,即表示设置该机器上所有nm的标签。
删除标签:
yarn rmadmin -removeFromClusterNodeLabels "x","y"