Permission denied: user=Admin, access=WRITE, inode="/":hadoop:supergroup:drwxr-xr-x
在本地eclipse上运行此段代码的时候会出现报错信息:Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.1.21:9000");fs = FileSystem.get(conf);报错信息如下所示:org.apache.hadoop.secur
·
在本地eclipse上运行此段代码的时候会出现报错信息:
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.1.21:9000");
fs = FileSystem.get(conf);
报错信息如下所示:
org.apache.hadoop.security.AccessControlException: Permission denied: user=Admin, access=WRITE, inode="/":hadoop:supergroup:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:271)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:257)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:238)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:179)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:6545)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:6527)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkAncestorAccess(FSNamesystem.java:6479)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:2712)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:2632)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:2520)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.create(NameNodeRpcServer.java:579)
解决方案(推荐):
在系统的环境变量添加HADOOP_USER_NAME,值为运行Hadoop的用户名称。例如我的用户就是hadoop(重启电脑,否则可能会不生效) 
或者就是将电脑名字改为hadoop,当然这种方法是比较low的,我们不可能每次都要进行修改吧!
客户端去操作hdfs的时候,是需要有一个身份的。默认的情况下。HDFS客户端API会从JVM中获取一个参数来最为自已的用户身份:-DHADOOP_USER_NAME=hadoop
还可以通过代码去指定当前用户:
Configuration conf = new Configuration();
fs = FileSystem.get(new URI("hdfs://admin1:9000"), conf, "hadoop");更多推荐
所有评论(0)