我们在使用Java API操作HDFS时如果出现如下错误提示:
org.apache.hadoop.security.AccessControlException: Permission denied: user=Administrator, access=WRITE, inode=”/”:hadoop:supergroup:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:399)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:399)
表明我们没有使用正确的用户操作HDFS,即没有操作权限,这里我们可以使用两种方案解决:
方案1:
在程序的main方法里面,最上面一行加入
System.setProperty("HADOOP_USER_NAME","你的用户名");
方案2:
在文件系统FileSystem创建对象时,表明“你的用户名”
FileSystem fileSystem = FileSystem.get(uri ,conf,"你的用户名");
然后再去尝试就发现OK了