CDH环境下Hadoop平台最高权限用户是hdfs,属于supergroup组。默认HDFS会开启权限认证,所以操作时,需要将root用户切换到hdfs用户,否则会报错。
问题:
org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/recsys2021":hdfs:supergroup:drwxr-xr-x
drwxr-xr-x - hdfs supergroup 0 2021-07-07 17:05 /recsys2021
直接使用root用户创建目录也会有权限问题
hadoop fs -mkdir /ping
mkdir: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
解决:
sudo -u hdfs hadoop fs -chown root /recsys2021
sudo -u hdfs hadoop fs -chmod 777 /recsys2021
hadoop fs -ls /
drwxrwxrwx - root supergroup 0 2021-07-07 17:05 /recsys2021
这样每次操作都需要添加权限不太方便,如yarn在调度时,通常会生成一些临时文件,执行完毕会删除,如果权限不够会导致出错。Hive和HBase读写hdfs,也很容易因为权限问题导致出错。但是关闭权限检查,任何用户都可以操作HDFS数据,数据安全性又没有保障,所以使用将用户添加到supergroup组的方式。
设置
通常会把 root 或者需要的用户添加到 supergroup组,但Linux下默认是没有supergroup组。
cat /etc/group
cat /etc/passwd
所以,先在Linux添加supergroup组,把root用户添加到supergroup里,再同步权限到HDFS。
groupadd supergroup
usermod -a -G supergroup root
su - hdfs -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"
验证
hadoop fs -mkdir /ping
hadoop fs -ls /
drwxr-xr-x - root supergroup 0 2021-07-08 13:15 /ping
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)