您的位置:首页 > 运维架构

Yarn标签调度实验

2018-03-01 08:47 281 查看
1.环境准备:使用ambari装了有三个节点的集群,hadoop版本要2.6.0以上,本次测试的hadoop版本是2.7.1,具体的节点分配如下:


2.在ambari界面yarn配置页面打开yarn Node Labes功能,如下图:




保存修改的配置,重启yan服务3.添加标签
所有的标签要先添加再使用,切换yarn用户,通过以下命令添加标签:
su – yarn
yarn rmadmin -addToClusterNodeLabels test_labe_1,test_labe_2
添加两个标签test_labe_1,test_labe_24.用命令查看标签
yarn cluster --list-node-labels



5.给各个节点打上标签:
yarn rmadmin -replaceLabelsOnNode "crh-1,test_labe_1"
yarn rmadmin -replaceLabelsOnNode "crh-2,test_labe_2"
yarn rmadmin -replaceLabelsOnNode "crh-3,test_labe_2"
crh-1节点上带的是test_labe_1,crh-2、crh-2节点上带的是test_labe_2,可以通过yarn的resourcemanger UI界面查看标签的分配情况:





注:再给节点指定标签的时候resourcemanger会自动死掉,重启以后,继续指定,直到指定完成。
6.设置,通过队列指定标签
目前还不支持提交应用程序时指定标签,只能通过指定队列,并设置队列的默认标签达到使用标签目的。
添加的队列和标签,以及节点和标签的对应关系如下:


在yarn-site添加属性:
yarn.node-labels.manager-class=org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsManager
设置队列,指定标签,在yarn配置的Scheduler选项中添加一下内容:
yarn.scheduler.capacity.root.queues=default,test_queue_1,test_queue_2,test_queue_3
yarn.scheduler.capacity.root.default.capacity=10
yarn.scheduler.capacity.root.test_queue_1.capacity=30
yarn.scheduler.capacity.root.test_queue_2.capacity=30
yarn.scheduler.capacity.root.test_queue_3.capacity=30

yarn.scheduler.capacity.root.default.maximum-capacity=100
yarn.scheduler.capacity.root.test_queue_1.maximum-capacity=100
yarn.scheduler.capacity.root.test_queue_2.maximum-capacity=100
yarn.scheduler.capacity.root.test_queue_3.maximum-capacity=100

//*表示所有标签
yarn.scheduler.capacity.root.accessible-node-labels=*
yarn.scheduler.capacity.root.test_queue_1.accessible-node-labels=test_labe_1
yarn.scheduler.capacity.root.test_queue_2.accessible-node-labels=test_labe_2

yarn.scheduler.capacity.root.accessible-node-labels.test_labe_1.capacity=60
yarn.scheduler.capacity.root.accessible-node-labels.test_labe_2.capacity=40
yarn.scheduler.capacity.root.test_queue_1.accessible-node-labels.test_labe_1.capacity=100
yarn.scheduler.capacity.root.test_queue_2.accessible-node-labels.test_labe_2.capacity=100

//注意:第一个逗号前的空格不可少,表示无标签
yarn.scheduler.capacity.root.default-node-label-expression= ,test_labe_1,test_labe_2
//注意:值是一个空格
yarn.scheduler.capacity.root.default.default-node-label-expression=
//注意:值是一个空格
yarn.scheduler.capacity.root.test_queue_3.default-node-label-expression=
yarn.scheduler.capacity.root.test_queue_1.default-node-label-expression=test_labe_1
yarn.scheduler.capacity.root.test_queue_2.default-node-label-expression=test_labe_2
保存修改的配置重启yarn使用命令查看队列


7.测试:
hadoop jar /usr/crh/5.0.2.4-1136/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi -Dmapreduce.job.queuename=test_ queue_1 1 1




hadoop jar /usr/crh/5.0.2.4-1136/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi -Dmapreduce.job.queuename=test_ queue_2 1 1




hadoop jar /usr/crh/5.0.2.4-1136/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi -Dmapreduce.job.queuename=test_ queue_3 1 1


hadoop jar /usr/crh/5.0.2.4-1136/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 1 1




注:
在为节点指定标签的时候,不要把所有的节点都指定标签,否则在使用没有指定标签的队列(如本次测试的default,test_queue_3队列)在跑任务的时候,队列就没有资源可以利用,导致任务无法继续进行。这个要根据自己的需求来定
使用以下命令,可以去掉节点上的标签:
yarn rmadmin -replaceLabelsOnNode "crh-3,"




在使用default、test_queue_3队列跑任务就ok了
hadoop jar /usr/crh/5.0.2.4-1136/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi  1 1


hadoop jar /usr/crh/5.0.2.4-1136/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi -Dmapreduce.job.queuename=test_queue_3 1 1


更多精彩原创文章,详见红象云腾社区
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CRH redoop YARN