默认情况下 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”

可成功列出目录即表示操作成功。