操作hdfs文件权限错误
使用指定用户和指定权限建文件夹和文件
创建文件时报错:
Caused by: org.apache.hadoop.ipc.RemoteException (org.apache.hadoop.security.AccessControlException): Permission denied: user=administrater, access=WRITE, inode="/test":root:supergroup:drwxr-xr-x
解决办法有多种
1. 通过代码的方式来设置当前用户名为 root,代码里添加如下代码:
System.setProperty("HADOOP_USER_NAME", "root");
2. 通过-D参数来设置当前操作的用户名;
在执行代码的时候通过 -D 参数来指定 HADOOP_USER_NAME 为 root:java -DHADOOP_USER_NAME root TestMkDir
,这样在执行程序的时候,程序获取到的系统中的变量 HADOOP_USER_NAME 的值就是 root,当前用户 就设为root。
3. 设多级目录,改变对应目录权限
在 /folder
目录下创建 /folder1/folder2
只需要把 /folder1
的目录权限设置为所有人可读,可写,可执行即可:chmod /folder1 777
4. 通过hdfs的命令直接改文件权限
例子:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ],
hdfs dfs -chown -R Administrator:Administrator /user/ #更改组、用户权限
hdfs dfs -chown -R Administrator /user/wocheck #更改用户
hdfs dfs -chgrp -R Administrator /use #更改组权限