IDEA 对虚拟机中 HDFS 进行文件操作,提示权限拒绝 org.apache.hadoop.security.AccessControlException: Permission denied
使用 API 对 HDFS 进行写入文件的时候提示如下:
org.apache.hadoop.security.AccessControlException: Permission denied: user=dabao, access=WRITE, inode="/":hadoop:supergroup:drwxr-xr-x
产生原因
当前用户 dabao 对,hdfs 的 / 目录没有操作权限,只有 hadoop 用户有权限,即虚拟机中建立来使用 HADOOP 的用户
解决方法
第一类:修改权限
方法1:虚拟机中直接hadoop fs -chmod 777 /
方法2:修改到Namenode上修改hadoop的配置文件:etc/hadoop/hdfs-site.xml 加入
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
第二类:修改操作用户
具体用户名根据自己情况
方法1:用户环境变量添加 HADOOP_USER_NAME=hadoop
,需重启电脑
方法2:IDEA 的 VM 添加 -DHADOOP_USER_NAME=hadoop
方法3:代码中设置系统变量,需在加载配置类创建 fileSystem 对象前
System.setProperty("HADOOP_USER_NAME", "hadoop");
Configuration configuration = new Configuration();
方法4:直接使用含用户名入参的方法创建 fileSystem 对象
fileSystem = FileSystem.get(new URI("hdfs://node01:9000"),configuration, "hadoop");
网友评论