我的 hdfs 中有几百 GB 的数据用于用户 A(单节点配置)。我想将所有数据传输给用户 B,这将更适合我设置的多节点配置。
我尝试了以下操作但没有成功:
hadoop fs -chown -R userB:hadoop PATH
,当以 userB 身份登录时,我看不到数据,而以 userA 身份登录则没问题,尽管 userB 被设置为 hdfs 所有者。- 尝试
start-all.sh
以用户 B 的身份访问,需要更改一些访问控制。同样,我什么也没看到。 - 试图强迫
<name>hadoop.tmp.dir</name>
用户A - 尝试将
hadoop-userA
目录重命名为hadoop-userB
列出目录时,我有以下内容
drwxr-xr-x - userB hadoop 0 2011-05-29 18:17 /user/userA/tmp
看起来数据仍归用户 A 所有。有什么办法可以解决这个问题吗?
添加用户B 在 hadoop 组中(当然)。
答案1
为了使其工作,您需要执行以下操作:
- 确保用户 B 可以在日志目录中写入
- 确保 userB 可以在 dfs/ 目录中写入
- 确保用户 B 具有目录的读取权限
hadoop fs -chown userB:hadoop
数据将保留在/ user / userA /,因此您需要使用绝对路径进行查询
hadoop fs -ls /user/userA/<path>
使用相对路径将指向不同的位置
hadoop fs -ls
答案2
尝试设置读取权限:
hadoop fs -chmod -R 644 PATH
答案3
您必须将数据复制到本地磁盘,然后与其他用户一起重新上传。