Hadoop - 解决无法在HDFS目录下上传文件、创建文件夹问题(Permission denied)
一、问题说明
1,问题描述
(1)最近使用 CDH 部署了一个大数据环境,使用 root 用户登录后查询 HDFS 目录下文件都正常,但是一旦执行上传或者创建文件夹命令:
hdfs dfs -put /words.dat / hdfs dfs -mkdir /hangges
(2)就会报如下错误:
put: Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x
2,问题原因
这是由于 / 文件的所有者是 hdfs,权限为 755,因此只有 hdfs 才能对这个文件进行操作
二、解决办法
1,解决办法1
(1)我们可以先使用 su 命令切换到 hdfs,然后再上传文件或者创建文件夹:
su hdfs hdfs dfs -mkdir /hangge
(2)或者也可以像下面这样临时切换成 hdfs 执行命令:
sudo -u hdfs hdfs dfs -mkdir /hangge
2,解决办法2
将目标目录的权限设置为 777,这样任何用户都可以操作该目录了:
sudo -u hdfs hadoop fs -chmod 777 /
3,解决办法3
(1)先执行如下命令添加 supergroup 组:
groupadd supergroup
(2)接着执行如下命令将 root 用户加入 supergroup 组:
usermod -a -G supergroup root
(3)最后执行如下命令同步系统的权限信息到 HDFS:
sudo -u hdfs hdfs dfsadmin -refreshUserToGroupsMappings
4,解决办法4
(1)在 hdfs-site.xml 中添加如下设置,关闭 HDFS 的权限校验。这种方法可让所有用户访问 hdfs 了,不用进入 hdfs 用户再执行命令。
<configuration> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> </configuration>
(2)而如果使用 CHD 的话,可以直接通过如下步骤关闭 HDFS 的权限校验:
- 进入 HDFS 的 Configuration 配置页面
- 搜索“dfs.permissions”
- 取消“Check HDFS Permissions”配置项的勾选状态
- 保存更改,重启 hdfs