一. 解释原因
HDFS(Hadoop Distributed File System)和linux文件系统管理一样,也是存在权限控制的。
但是很不一样的是,
- 在Linux文件系统中,超级用户Superuser是root
- 而在HDFS中,超级用户Superuser是启动了namenode的用户,上图的node1(其实就是IP地址:192.168.88.101)中的用户hadoop就是启动了namenode的用户,所以用户hadoop为HDFS的超级用户
所以就可以解释了:root用户确实是Linux文件系统的超级用户,权限很大,但是到了HDFS中,也只是个普通用户罢了,所以权限会处处受限。所以想要获得HDFS的最高权限,就必须su - hadoop
,切换成hadoop用户。
二. 解决方法
在HDFS中,使用和Linux一样的chown
和chomod
的授权语句,给root用户授权即可。
- 修改 文件/目录 所属的用户的和组,两句新旧版本的命令效果一样,-R表示递归授权目录下的全部子目录或者文件
Usage: hdfs dfs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
hadoop fs -chown [-R] root:root /xxx.txt
hdfs fs -chown [-R] root:root /xxx.txt
- 修改 文件/目录 的权限
Usage: hdfs dfs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]
hadoop fs -chmod [-R] 777 /xxx.txt
hdfs fs -chmod[-R] 777 /xxx.txt