Hadoop使用者、使用者組以及許可權
阿新 • • 發佈:2020-12-30
技術標籤:大資料
hadoop的使用者和使用者組使用的是Linux中的使用者組。先看一個問題,如何把root
使用者加入到超級組supergroup
先建立使用者組:supergroup
groupadd supergroup
然後把root使用者新增到該組
usermod -a -G supergroup root
重新整理hadoop上的使用者和使用者組對映
hdfs dfsadmin -refreshUserToGroupsMappings
第一次執行,root使用者並沒有獲得supergroup組的許可權,可能是因為執行的機器hadoop01不是active狀態,也可能是因為必須兩個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