当前位置: > > > Hadoop - 解决无法在HDFS目录下上传文件、创建文件夹问题(Permission denied)

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
评论0