【问题标题】:Why does "hadoop fs -mkdir" fail with Permission Denied?为什么“hadoop fs -mkdir”会因权限被拒绝而失败?
【发布时间】:2014-05-05 18:37:12
【问题描述】:

我在我正在玩的 VM 机器上使用 Cloudera。不幸的是,我在将数据复制到 HDFS 时遇到问题,我得到以下信息:

[cloudera@localhost ~]$ hadoop fs -mkdir input
mkdir: Permission denied: user=cloudera, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

我不太关心这个虚拟机的安全性,有没有我可以在 HDFS 上打开更多的安全性?

【问题讨论】:

    标签: hadoop hdfs cloudera


    【解决方案1】:

    在 hadoop 中使用mkdir 需要“hadoop 文件权限”。从您的示例中,您可以看到 hdfs 是有权创建文件夹的用户。所以如果你运行:

    sudo -u hdfs hadoop fs -mkdir /import
    

    然后将创建import 文件夹。如果要更改此文件夹的所有者,请运行:

    sudo -u hdfs hadoop fs -chown new_user /import
    

    现在new_user可以操作import文件夹中的文件

    【讨论】:

      【解决方案2】:

      执行上述命令时,如果hdfs主目录(/user/cloudera)不存在,则先创建该目录,然后在/user/cloudera下创建目录输入

      要授予 cloudera 用户创建自己的目录的权限,您必须授予权限。 hdfs用户是hdfs中的admin用户切换到hdfs然后执行以下命令

      [hdfs@localhost~]$ hadoop fs -mkdir /user/cloudera ; hadoop fs -chmod 777  /user/cloudera
      

      或者

      如果您不太关心 hdfs 安全性,您可以通过在 hdfs-site.xml 中将以下属性设置为 false 来禁用 hdfs 权限

      <property>
      <name>dfs.permissions.enabled</name>
      <value>false</value>
      </property>
      

      将此属性设置为false后需要重启hdfs。

      【讨论】:

      • 如果我运行该命令,我会得到: [cloudera@localhost ~]$ hadoop fs -mkdir /user/cloudera ; hadoop fs -chmod 777 /user/cloudera mkdir: Permission denied: user=cloudera, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x chmod: `/user/cloudera': 没有这样的文件或目录
      • 在执行上述命令之前,您必须将用户切换到 hdfs 用户。使用命令 su hdfs
      • 或者按照第二步禁用hdfs权限
      【解决方案3】:

      在cloudera manager中,您可以更改设置:hdfs->configuration->view&edit,取消选中Check HDFS Permissions dfs.permissions并重新启动hdfs。

      【讨论】:

        【解决方案4】:

        我通过在/etc/group 中创建一个超级组并更新了用户登录来解决了这个问题。我的意思是用户应该是 HDFS 超级组的一部分才能有权在 HDFS 上写入。

        $vi /etc/group

        supergroup:x:30000:root

        后来能够在 HDFS 上写入。希望对你有帮助

        【讨论】:

          【解决方案5】:

          这是因为您没有足够的权限在 hdfs 中创建目录。尝试以 sudo 运行:

          sudo -u hdfs hadoop fs -mkdir -p /user/samplefolder
          

          但不建议这样做,因为它会损害安全性。

          【讨论】:

            【解决方案6】:
            export HADOOP_USER_NAME=hdfs
            

            尝试运行此命令,然后创建一个目录,它对我来说就像一个魅力。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2018-10-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-08-24
              • 2013-07-01
              相关资源
              最近更新 更多