0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

文檔編寫目的

YARN的隊列默認支持ACL的功能,即可以控制哪些用戶/組可以提交任務到指定隊列,也可以控制哪些用戶/組可以管理該隊列的作業(刪除作業)。通過YARN Queue Manager UI可以界面化配置YARN的資源隊列,隊列權重,隊列資源,以及隊列的ACL等。本文主要講述如何在CDP DC 7.0.3集群上使用YARN Queue Manager UI來控制隊列的ACL。


  • 測試環境:

1.Redhat7.6

2.採用root用戶操作

3.CM和CDP DC版本為7.0.3


啟用YARN的ACL

1.通過Cloudera Manager進入YARN的配置,啟用YARN的ACL。

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL


2.設置yarn.admin.acl

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

如上所述,這裡我們設置為“yarn yarn”,即用戶yarn和組yarn,當然只設置一個用戶yarn也一樣。

YARN的管理員設置,如可執行yarn rmadmin/yarn kill等命令,該值必須配置,否則後續的隊列相關的acl管理員設置無法生效。配置值時可以設置user/group:

<code>user1,user2 group1,group2 #user和group用空格隔開
 group1,group2 #只有group情況下,必須在最前面加上空格/<code>


3.保存配置更改並重啟集群服務

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL


創建隊列並進行ACL設置

1.在集群創建下列用戶,並配置到不同的組。

如下圖,用戶usera,userb,userc,userd,usere所屬的組都跟自己同名。用戶userf的組為usere,與用戶usere為同一個組。

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL


2.在CM上點擊集群,再點擊YARN Queue Manager UI進入隊列管理界面

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL


3.點擊root旁邊的三個點,進行子隊列的創建,這裡分別創建隊列usera和userb

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL


點擊後,進行添加,設置隊列名和CONFIGURED CAPACITY的百分比,這裡所有隊列的CONFIGURED CAPACITY百分比加起來必須是100%,否則不能保存。

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

全部添加完之後,如下圖

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL


4.設置隊列的ACL權限

以root.usera為例,點擊旁邊的三個點,然後選擇查看/編輯隊列

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

編輯後如下圖,這個設置的意思是用戶usera有提交應用到隊列root.usera的權限。用戶userb,userc和用戶組usere裡面的用戶擁有對隊列root.usera的管理權限。

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

對隊列userb的設置如下,表示用戶usera,userb擁有對隊列root.userb的提交應用的權限,下面的Queue Administer ACL裡面是天的一個空格,表示所有用戶都沒有管理權限

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL


隊列ACL測試

1.分別用用戶usera,userb和userd提交任務到root.usera

<code>hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi -D mapred.job.queue.name=usera 1 10/<code>


0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

根據上面的測試可以看到,擁有Submit Application ACL或者Queue Administer ACL權限的用戶或者組都可以向該隊列提交任務。沒有權限的用戶,則會提交任務失敗。


2.通過用戶usera提交任務到root.usera。然後在任務執行過程中,分別用usera,userb,userd,userf來kill任務,看是否擁有隊列的管理權限

提交任務命令如下

<code>hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi -D mapred.job.queue.name=usera 1000 10/<code>

kill application的命令如下,後面的applicaition ID根據提交的任務來進行修改

<code>yarn application -kill application_1582953488656_0018/<code>

如下圖,用戶usera終止任務成功

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL


如下圖,用戶userb終止任務成功

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL


如下圖,用戶userd終止任務失敗

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL


如下圖,用戶userf終止任務成功

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

以上測試說明,提交任務的用戶和擁有該資源池管理權限的用戶或用戶組,擁有對該隊列的管理權限。


3.再用用戶usera提交任務到隊列root.userb然後使用用戶userb進行kill該任務。

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

0760-7.0.3-如何使用Cloudera Manager設置使用YARN隊列的ACL

從上圖可以看到,用戶userb執行kill命令失敗,提示userb沒有權限進行管理該任務。說明了只有提交任務權限的用戶,不能對該隊列進行管理。


總結


1.要通過YARN Queue Manager UI進行資源池隊列的ACL控制,需要先在YARN的配置裡面勾選啟用ResourceManager ACL。

2.一旦配置了隊列的ACL,用戶可以往自己有權限的隊列裡提交作業,如果該隊列沒權限,則作業提交失敗。如果用戶沒有隊列的管理訪問權限,沒辦法kill該隊列裡的作業。

3.子隊列會繼承父隊列的權限,在子隊列設置權限前,父隊列ACL要設置成空格。

4.某個用戶可以kill自己提交的作業,即使該用戶不在“Queue Administer ACL”的用戶/組裡。

5.一旦用戶具有某個隊列的“Queue Administer ACL”,即使他不在“Submit Administer ACL”裡,他依舊可以往該隊列提交任務。

6.在配置框裡面,user和group之間用空格隔開。多個user或者多個group用逗號分隔。如果只配置group,需要在前面加上空格。


分享到:


相關文章: