关于Hadoop多用户管理支持客户端远程操作的理论总结
1、問題
Hadoop客戶端如何配置可遠程操作Hadoop;Hadoop多用戶情況下,是如何管理權限并分配存儲空間和計算能力,保證集群的穩定。
2、Hadoop平臺
要理解客戶端如何通過指定用戶遠程操作hadoop集群,這里先理解下hadoop平臺的部署架構。Hadoop是大數據分布式處理的軟件框架,集成MapReduce分布式編程模型和HDFS分布式文件存儲系統。MapReduce將執作業job分割成任務task,運行于各計算節點的。HDFS負責各個節點的數據存儲,實現高吞吐率的數據讀寫。
Hadoop的主/從(Master/Slave)集群架構,主要由NameNode、DataNode、Secondary NameNode、JobTracker、TaskTracker組成。其中NameNode、Secondary? NameNode、JobTracker運行在Master節點上,而在每個Slave節點上,部署一個DataNode和TaskTracker。集群datanode之間并行地復制大文件可通過distcp命令。
從這個體系上看,主要是Client和Master之間通信來實現遠程和多用戶管理。
2、Hadoop客戶端安裝和配置
1)Centos操作系統下,客戶端Client用戶名為A,服務器Master用戶名為M,復制服務器的Hadoop安裝包到客戶端。
2)系統/etc/profile配置hadoop的home路徑;
3)Hadoop目錄下hadoop-env.sh配置jdk路徑;
4)Hadoop目錄下core-site.xml配置集群namenode路徑;
?? <property>
<name>fs.default.name</name>
<value>hdfs://Master:8020</value>
</property>
5)Hadoop目錄下mapred-site.xml配置集群jobtracker路徑;
<property>
<name>mapred.job.tracker</name>
<value> Master:8021</value>
</property>
Hadoop客戶端已完成配置,如Master服務器已設置好用戶A,則可以運行Hadoop命令,如向hdfs系統上傳文件。
現在的關鍵是Master服務器如何用M管理多用戶權限,使客戶端Client的用戶A具有執行Master命令的權限。有必要先了解Linux的ACL機制。
3、ACL機制
ACL(AccessControl List) 訪問控制列表,可置特定用戶或用戶組對于一個文件/目錄的操作權限,包包括owner、group、others的read、write、execute權限。主要兩個命令是:getfacl查看文件/目錄的ACL設定內容和setfacl設置文件/目錄的ACL內容。
1)$getfaclmy.cnf? //查看my.cnf的acl內容
# file: my.cnf
# owner: root
# group: root
user::rw-
group::r--
other::r—
通過執行$ls-l my.cnf比照更清晰理解:
-rw-r--r-- 1 root root 943 3月?13 2015 my.cnf
2)$setfacl-m o:rwx my.cnf //設置my.cnf文件other
# file: my.cnf
# owner: root
# group: root
user::rw-
group::r--
other::rwx
3)語法參考:setfacl[-bkRd] [{-m|-x} acl參數] 文件名
-m :設置后續的acl參數
-x :刪除后續的acl參數
-b :刪除所有的acl設定參數
-R :遞歸設置acl參數
-d :設置預設的acl參數(只對目錄有效,在該目錄新建的文件也會使用此ACL默認值)
-k :刪除預設的acl參數
4)開啟和關閉:
ACL默認是開啟的,開啟和關閉可通過mount -o acl實現。
查看當前文件系統的掛載選項:
# tune2fs -l/dev/sda1 | grep “mount option”
Defaultmount options: user_xattr acl
使用tune2fs開啟和關閉acl的命令:
tune2fs -oacl /dev/sda1
tune2fs -o^acl /dev/sda1
4、Hadoop訪問控制
Hadoop訪問控制分為兩級,其中Service Level Authorization為系統級,用于控制是否可以訪問指定的服務,例如用戶/組是否可以向集群提交Job,它是最基礎的訪問控制,優先于文件權限和mapred隊列權限驗證。Access Control on Job Queues在job調度策略層之上,控制mapred隊列的權限。DFS Permmision用戶控制文件權限。
?Hadoop文件和目錄權限管理集成ACL,基于POSIX(Portable Operating System Interface,可移植操作系統接口)模型,支持按用戶、用戶組、其他用戶的讀寫執行控制權限。
Hadoop修改文件的權限、所有者及其所屬組的基本命令如下:
hadoop fs –chmod?//修改文件所有者、所屬組、其他用戶的讀、寫、執行權限;
haddop fs –chown? //修改文件所有者
hadoop fs –chgrp?? //修改文件所屬組
用戶組和用戶名都是Linux本身管理,Hadoop只是管理特定Linux用戶對hdfs文件系統的權限,實現不同客戶端通過不同linux帳戶遠程Hadoop。客戶端調用hadoop 的文件操作命令時,hadoop 識別出客戶端執行命令所在進程的用戶名和用戶組(通過linux命令whoami識別用戶名、通過groups 識別用戶組,也有Kerberos、LDAP等身份識別方式),然后Master服務器檢查賦予的該用戶名和組的文件權限。
客戶端Client啟動hadoop進程遠程Namenode時識別用戶為A;Master服務器系統已有分配好hdfs文件權限的用戶A,收到客戶端請求后,檢查A所執行命令的文件權限。
那么Hadoop具體如何分配用戶權限及其所擁有的存儲空間和計算能力。
5、Hadoop多用戶管理
Master服務器的hadoop超級用戶M(不是Linux操作系統的root),具有啟動集群和執行所有命令的權限。那么M超級用戶是如何管理hadoop普通用戶的權限。
1)新建Master服務器Linux系統用戶A、用戶組A;
2)Hadoop創建用戶A的目錄
$hadoop fs –mkdir/user/A
$hadoop fs –ls? /user/A ?//查看該文件夾權限
3)賦予用戶A擁有目錄的權限
$hadoop fs –chownA:A /user/A
4)設定用戶A目錄的空間容量
$hadoopdfsadmin –setSpaceQuota 1t /user/A? //如設置為1T
此時客戶端A用戶啟動hadoop遠程Master即可執行相關hadoop命令,提交任務數據到HDFS的/user/A目錄。實際上,簡單的多用戶權限管理并不需要ACL功能,只需要hadoop本身文件操作命令即可,將hadoop多用戶權限配置轉移成單純的hdfs文件的用戶權限配置。
那如何進一步管理多用戶的文件權限和資源能力呢?
對于復雜的文件權限訪問控制,如要用戶組里的所有用戶都具備用戶組相應的權限,需要使用ACL權限管理機制。
1)Hadoop啟用ACL
hdfs-site.xml設置:
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
core-site.xml設置用戶組默認權限:
<property>
<name>fs.permissions.umask-mode</name>
<value>022</value>
</property>
2)HadoopACL命令
$hdfs?dfs -getfacl [-R] path
顯示文件和目錄的訪問控制列表。如果一個目錄有默認的ACL,getfacl也可以顯示默認的ACL設置。
$hdfs?dfs -setfacl [-R] [-b|-k -m|-x acl_spec path]|[--set acl_spec path]
設置文件和目錄的ACL
-R: Use thisoption to recursively list ACLs for all files and directories.
-b: Revokeall permissions except the base ACLs for user, groups and others.
-k: Removethe default ACL.
-m: Add newpermissions to the ACL with this option. Does not affect existing permissions.
-x: Removeonly the ACL specified.
參考:
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html
對于多用戶的資源分配,Hadoop通過Fair Scheduler或者 Capacity Scheduler支持,而作業管理則通過ACL來滿足。
1)資源管理:以用戶組和用戶為主體配置可用資源。Fair Scheduler將整個Yarn的可用資源劃分成多個資源池,支持按照用戶名配置所屬的資源池。每個資源池中可以配置最小和最大的可用資源(內存和CPU)、最大可同時運行Application數量、權重、以及可以提交和管理Application的用戶等。
2)作業管理:主要是作業提交權限控制、作業運行狀態查看權限控制等。如限定可提交作業的用戶、限定可查看作業運行狀態的用戶、限定普通用戶只能修改自己作業的優先級、kill自己的作業、高級用戶可以控制所有作業等。
6、總結
對于Hadoop多用戶管理的機制,從用戶創建、到文件管理、資源和作業管理,通過兩天時間的學習,大致梳理了下。對于進一步深入掌握Hadoop相關機制,還有很漫長的路,需要通過實踐不斷總結。
Hadoop多用戶管理最主要是基于linux的用戶分組和用戶基礎,并應用ACL管理文件和作業訪問權限。在具體作業和資源管理上,還未進一步試驗練習。
總結
以上是生活随笔為你收集整理的关于Hadoop多用户管理支持客户端远程操作的理论总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转载)数据库范式及宽表窄表理解
- 下一篇: HDFS多用户管理ACL机制other权