默认情况下 hdfs 的namenode启动用户为 superuser
当程序实际运行中,获取进程/线程的用户,UGI的用户信息进行权限认证
其他用户需要超级权限,则需要加入supergroup
Hadoop本身的用户和组的关系,都是同步Linux系统中的,但是HDFS和Linux的超级用户组又有一点差别,HDFS中的超级用户组是supergroup,但是Linux中默认是没有supergoup这个组,这个时候只需要在Linux中增加supergroup这个组,然后将要在HDFS中加入到supergroup中的用户加到这个组中,再同步HDFS用户和组即可。
操作步骤如下:
1、在Linux执行如下命令增加supergroup
groupadd supergroup
2、如将用户yarn增加到supergroup中,再执行:
usermod -a -G supergroup yarn
3、同步系统的权限信息到HDFS:
su – hdfs -s /bin/bash -c “hdfs dfsadmin -refreshUserToGroupsMappings”
4、验证
1) 将/user/hdfs目录的权限由700,修改为770
su – hdfs -s /bin/bash -c “hadoop fs -chmod 770 /user/hdfs”
2) 通过加到supergroup组中的yarn用户去列这个目录:
su – yarn -s /bin/bash -c “hadoop fs -ls /user/hdfs”
可成功列出目录即表示操作成功。