当前位置: 首页 > 知识库问答 >
问题:

无法更改对hdfs目录的读写权限

那昊
2023-03-14

我正在尝试将文本文件复制到hdfs位置。
我面临访问问题,所以我尝试更改权限。
但我无法更改以下相同的面临错误:

chaithu@localhost:~$ hadoop fs -put test.txt /user
put: Permission denied: user=chaithu, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

chaithu@localhost:~$ hadoop fs -chmod 777 /user
chmod: changing permissions of '/user': Permission denied. user=chaithu is not the owner of inode=user

chaithu@localhost:~$ hadoop fs -ls /
Found 2 items
drwxrwxrwt   - hdfs supergroup          0 2017-12-20 00:23 /tmp
drwxr-xr-x   - hdfs supergroup          0 2017-12-20 10:24 /user

共有1个答案

韦高阳
2023-03-14

首先,您不应该直接写入/user文件夹,也不应该在其中设置777

您需要当前用户的用户目录来运行mapreduce作业,因此需要首先sudo su-hdfs才能成为HDFS超级用户。

然后运行这些文件为您的用户帐户创建HDFS目录

 hdfs dfs -mkdir -p /user/chaithu
 hdfs dfs -chown -R chaithu /user/chaithu
 hdfs dfs -chmod -R 770 /user/chaithu
hadoop fs -put test.txt

仅此一项就会将文件放在当前用户的文件夹中。

或者,如果这对您来说是太多的工作,而不是写/tmp

一个懒惰的选项是将您的用户帐户改写为超级用户。

export HADOOP_USER_NAME=hdfs 
hadoop fs -put test.txt /user

这就是为什么hadoop在默认情况下不安全或不强制用户帐户访问的原因(即在生产中从不这样做)

最后,您可以在hdfs-site.xml中完全关闭权限(同样,只在开发阶段有用)

 <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>
 类似资料:
  • 问题内容: 我正在Linux C项目上工作,无法使用文件描述符。 我有一个孤立的文件描述符(文件是open()然后是unlink(),但是fd仍然很好),它具有只写权限。原始备份文件具有完全权限(使用S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH创建),但是可惜文件是用O_WRONLY打开的。是否可以复制文件描述符并将副本更改为O_RDWR? 伪代码: 提前致谢!-安德

  • 当我使用JAVA API将数据放入hdfs时,我必须为hdfs目标目录提供许可。我尝试了以下代码: 我有以下错误

  • 与不保留目录的tar和不保留目录的Tar创建相关 大家好, 感谢您理解 -C 用于创建一个 tar(tar -cf a/b/c/tar 文件.tar -C a/b/c .),而不保留目录结构。 但是当我取消其更改父目录权限时。请帮助我了解更多。它不应该在提取tar(tar-xvf)时更改父目录权限。

  • 问题内容: 我正在使用Android 1.5,我的数据目录没有读/写权限 因此,请建议我如何为数据目录提供权限。 我想要做的是创建一个文件,并在模拟器的数据存储中向其中添加一些内容,如下所示 问题答案: 应用程序将永远无权对其进行写入。 方法将返回应用程序应将文件写入的目录。会是这样的。 如果要写入手机存储中的文件,请使用方法。 如果您想要SD卡的路径,请使用Environment.getExte

  • 问题内容: 我正在尝试使用PHP创建文件,但无法正常工作。我假设这是因为它没有写访问权限(以前一直是问题)。我试图通过使文件夹chmod 0777来测试这是否是问题,但是最终使该目录中的每个脚本都返回了500条错误消息,直到我将其改回为止。如何授予PHP对文件系统的写访问权,以便它可以创建文件? 编辑:它托管在使用Apache的Hostgator共享托管上。 编辑2:有人要求输入代码:该代码是GD

  • 我有一个map reduce作业,它已经使用配置单元分区命名约定将记录写入hdfs。 如 有没有一种方法可以让hive自动识别分区(不需要执行插入查询)?