搭建CDH后,hdfs的权限问题
问题描述:搭建cdh集群后,在hdfs中创建文件报错:Permission denied: user=root, access=WRITE, inode=“/“:hdfs:supergroup:drwxr-xr-x
即使使用root账户也是一样。
无论是用sudo hadoop dfs -mkdir 建立文件 还是 put文件,都会显示,同样的错误!!
经过百度发现了一个解决方法:
其实是这样的,**/这是文件的所有者是hdfs 权限为755 也就是只有hdfs才能对这个文件进行sudo的操作*
那么接下来我们便可以这样操作文件
sudo -u hdfs hadoop fs -mkdir /user/root 我们可以以hdfs的身份对文件进行操作
切换到hdfs用户 进行执行命令即可.
第二种方法:
在hdfs-site.xml中添加设置。这种方法可让所有用户访问hdfs了,不用进入hdfs用户再执行命令。
CDH中没有这个配置需要自己加进去,步骤如下:
1、找到hdfs-site.xml 的 HDFS 服务高级配置代码段(安全阀)
2、添加设置如下,保存更改,重启hdfs。dfs.permissions.enaled 的值设置为false
第三种方法:
使用HDFS的命令行接口修改相应目录的权限,hadoop fs -chmod 777 /user,后面的/user是要上传文件的路径,不同的情况可能不一样,比如要上传的文件路径为hdfs://namenode/user/xxx.doc,则这样的修改可以,如果要上传的文件路径为hdfs://namenode/java/xxx.doc,则要修改的为hadoop fs -chmod 777 /java或者hadoop fs -chmod 777 /,java的那个需要先在HDFS里面建立Java目录,后面的这个是为根目录调整权限。