我正在尝试将文本文件复制到 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
Run Code Online (Sandbox Code Playgroud)
请帮助我如何更改所有用户访问 HDFS 文件夹的完全读写权限。
首先,您不应该直接写入 /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
Run Code Online (Sandbox Code Playgroud)
然后exit从 hdfs 用户,chaithu现在可以写入其自己的 HDFS 目录。
hadoop fs -put test.txt
Run Code Online (Sandbox Code Playgroud)
仅此一项就会将该文件放入当前用户的文件夹中。
或者,如果这对您来说工作量太大,请改为写入 /tmp
一个懒惰的选择是将您的用户帐户重写为超级用户。
export HADOOP_USER_NAME=hdfs
hadoop fs -put test.txt /user
Run Code Online (Sandbox Code Playgroud)
这就是为什么 hadoop 不安全或默认强制执行用户帐户访问(即从不在生产中执行此操作)
最后,您始终可以在 hdfs-site.xml 中完全关闭权限(同样,仅在开发阶段有用)
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18770 次 |
| 最近记录: |