Yarn多租戶資源隔離


在一個公司內部的Hadoop Yarn集群,肯定會被多個業務、多個用戶同時使用,共享Yarn的資源,如果不做資源的管理與規划,那么整個Yarn的資源很容易被某一個用戶提交的Application占滿,其它任務只能等待,這種當然很不合理,我們希望每個業務都有屬於自己的特定資源來運行MapReduce任務,Hadoop中提供的公平調度器–Fair Scheduler,就可以滿足這種需求。

Fair Scheduler將整個Yarn的可用資源划分成多個資源池,每個資源池中可以配置最小和最大的可用資源(內存和CPU)、最大可同時運行Application數量、權重、以及可以提交和管理Application的用戶等。

Fair Scheduler除了需要在yarn-site.xml文件中啟用和配置之外,還需要一個XML文件fair-scheduler.xml來配置資源池以及配額,而該XML中每個資源池的配額可以動態更新,之后使用命令:yarn rmadmin refreshQueues 來使得其生效即可,不用重啟Yarn集群。

需要注意的是:動態更新只支持修改資源池配額,如果是新增或減少資源池,則需要重啟Yarn集群

1.1. 編輯yarn-site.xml

yarn集群主節點中yarn-site.xml添加以下配置

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop

vim yarn-site.xml

<!--  指定使用fairScheduler的調度方式  -->

<property>

       <name>yarn.resourcemanager.scheduler.class</name>

       <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>

</property>

 

<!--  指定配置文件路徑  -->

<property>

       <name>yarn.scheduler.fair.allocation.file</name>

       <value>/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/fair-scheduler.xml</value>

</property>

 

<!-- 是否啟用資源搶占,如果啟用,那么當該隊列資源使用

yarn.scheduler.fair.preemption.cluster-utilization-threshold 這么多比例的時候,就從其他空閑隊列搶占資源

  -->

<property>

       <name>yarn.scheduler.fair.preemption</name>

       <value>true</value>

</property>

 

<property>

       <name>yarn.scheduler.fair.preemption.cluster-utilization-threshold</name>

       <value>0.8f</value>

</property>

 

<!-- 默認提交到default隊列  -->

<property>

       <name>yarn.scheduler.fair.user-as-default-queue</name>

       <value>true</value>

</property>

 

<!-- 如果提交一個任務沒有到任何的隊列,是否允許創建一個新的隊列,設置false不允許  -->

<property>

       <name>yarn.scheduler.fair.allow-undeclared-pools</name>

       <value>false</value>

</property>
 
 
 
71
 
 
 
 
1
<!-- 指定使用fairScheduler的調度方式 -->
2
 
                 
3
<property>
4
 
                 
5
       <name>yarn.resourcemanager.scheduler.class</name>
6
 
                 
7
       <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
8
 
                 
9
</property>
10
 
                 
11
 
                 
12
 
                 
13
<!-- 指定配置文件路徑 -->
14
 
                 
15
<property>
16
 
                 
17
       <name>yarn.scheduler.fair.allocation.file</name>
18
 
                 
19
       <value>/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/fair-scheduler.xml</value>
20
 
                 
21
</property>
22
 
                 
23
 
                 
24
 
                 
25
<!-- 是否啟用資源搶占,如果啟用,那么當該隊列資源使用
26
 
                 
27
yarn.scheduler.fair.preemption.cluster-utilization-threshold 這么多比例的時候,就從其他空閑隊列搶占資源
28
 
                 
29
  -->
30
 
                 
31
<property>
32
 
                 
33
       <name>yarn.scheduler.fair.preemption</name>
34
 
                 
35
       <value>true</value>
36
 
                 
37
</property>
38
 
                 
39
 
                 
40
 
                 
41
<property>
42
 
                 
43
       <name>yarn.scheduler.fair.preemption.cluster-utilization-threshold</name>
44
 
                 
45
       <value>0.8f</value>
46
 
                 
47
</property>
48
 
                 
49
 
                 
50
 
                 
51
<!-- 默認提交到default隊列 -->
52
 
                 
53
<property>
54
 
                 
55
       <name>yarn.scheduler.fair.user-as-default-queue</name>
56
 
                 
57
       <value>true</value>
58
 
                 
59
</property>
60
 
                 
61
 
                 
62
 
                 
63
<!-- 如果提交一個任務沒有到任何的隊列,是否允許創建一個新的隊列,設置false不允許 -->
64
 
                 
65
<property>
66
 
                 
67
       <name>yarn.scheduler.fair.allow-undeclared-pools</name>
68
 
                 
69
       <value>false</value>
70
 
                 
71
</property>
 
 

1.2. 添加fair-scheduler.xml配置文件

yarn主節點執行以下命令,添加faie-scheduler.xml的配置文件

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop

vim fair-scheduler.xml

詳細見附件資料。

1.3. scp分發配置文件、重啟yarn集群

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop

scp yarn-site.xmlfair-scheduler.xml node02:$PWD

scp yarn-site.xmlfair-scheduler.xml node03:$PWD

 

stop-yarn.sh

start-yarn.sh

1.4. 創建普通用戶hadoop

node-1執行以下命令添加普通用戶

useradd hadoop

passwd hadoop

 

 

1.5. 賦予hadoop用戶權限

修改hdfs上面tmp文件夾的權限,不然普通用戶執行任務的時候會拋出權限不足的異常。以下命令在root用戶下執行。

groupadd supergroup

usermod -a -G supergroup hadoop    修改用戶所屬的附加群主

su - root -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"

刷新用戶組信息

1.6. 使用hadoop用戶提交程序

su hadoop

hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar pi 10 20

1.7. 瀏覽器查看結果

http://node01:8088/cluster/scheduler

瀏覽器界面訪問,查看Scheduler,可以清晰的看到任務提交到了hadoop隊列里面去了。

 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM