1. 程式人生 > 其它 >Hadoop使用者、使用者組以及許可權

Hadoop使用者、使用者組以及許可權

技術標籤:大資料

hadoop的使用者和使用者組使用的是Linux中的使用者組。先看一個問題,如何把root使用者加入到超級組supergroup
先建立使用者組:supergroup

groupadd supergroup

然後把root使用者新增到該組

usermod -a -G supergroup root

重新整理hadoop上的使用者和使用者組對映

 hdfs dfsadmin -refreshUserToGroupsMappings

第一次執行,root使用者並沒有獲得supergroup組的許可權,可能是因為執行的機器hadoop01不是active狀態,也可能是因為必須兩個namenode必須都都有這個使用者組才行,具體沒有驗證。直接在所有機器上執行了操作。

檢視namenode狀態的命令

hdfs haadmin -getAllServiceState

在這裡插入圖片描述
修改Hadoop檔案使用者組

hadoop fs -chown root:root /user/root

第一個root是使用者組,第二個是使用者

[[email protected] ~]# hadoop fs -ls /user
Found 2 items
drwx------   - hadoop supergroup          0 2020-12-27 18:56 /user/hadoop
drwx------   - root   root                0 2020-12-27 19:24 /user/root

為了方便在所有機器上執行同樣的操作,寫了一個指令碼doAll

for i in {5..1};
do
echo "正在伺服器hadoop0${i}上執行操作:$1"
ssh hadoop0${i} "${1}"
done

看效果

[[email protected] ~]# doAll 'groupadd supergroup'
正在伺服器hadoop05上執行操作:groupadd supergroup
正在伺服器hadoop04上執行操作:groupadd supergroup
正在伺服器hadoop03上執行操作:groupadd supergroup
正在伺服器hadoop02上執行操作:groupadd supergroup
正在伺服器hadoop01上執行操作:groupadd supergroup
groupadd: group 'supergroup'
already exists [[email protected] ~]# doAll 'usermod -a -G supergroup root' 正在伺服器hadoop05上執行操作:usermod -a -G supergroup root 正在伺服器hadoop04上執行操作:usermod -a -G supergroup root 正在伺服器hadoop03上執行操作:usermod -a -G supergroup root 正在伺服器hadoop02上執行操作:usermod -a -G supergroup root 正在伺服器hadoop01上執行操作:usermod -a -G supergroup root [[email protected] ~]# doAll 'usermod -a -G supergroup hadoop' 正在伺服器hadoop05上執行操作:usermod -a -G supergroup hadoop 正在伺服器hadoop04上執行操作:usermod -a -G supergroup hadoop 正在伺服器hadoop03上執行操作:usermod -a -G supergroup hadoop 正在伺服器hadoop02上執行操作:usermod -a -G supergroup hadoop 正在伺服器hadoop01上執行操作:usermod -a -G supergroup hadoop [[email protected] ~]# doAll 'cat /etc/group |grep supergroup' 正在伺服器hadoop05上執行操作:cat /etc/group |grep supergroup supergroup:x:1001:root,hadoop 正在伺服器hadoop04上執行操作:cat /etc/group |grep supergroup supergroup:x:1001:root,hadoop 正在伺服器hadoop03上執行操作:cat /etc/group |grep supergroup supergroup:x:1001:root,hadoop 正在伺服器hadoop02上執行操作:cat /etc/group |grep supergroup supergroup:x:1001:root,hadoop 正在伺服器hadoop01上執行操作:cat /etc/group |grep supergroup supergroup:x:1001:root,hadoop