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是用户组,第二个是用户
[root@hadoop01 ~]# 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
看效果
[root@hadoop01 ~]# doAll 'groupadd supergroup'
正在服务器hadoop05上执行操作:groupadd supergroup
正在服务器hadoop04上执行操作:groupadd supergroup
正在服务器hadoop03上执行操作:groupadd supergroup
正在服务器hadoop02上执行操作:groupadd supergroup
正在服务器hadoop01上执行操作:groupadd supergroup
groupadd: group 'supergroup' already exists
[root@hadoop01 ~]# 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
[root@hadoop01 ~]# 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
[root@hadoop01 ~]# 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