0

在hadoop中复制文件时有什么方法可以保留所有权/权限?试过了hadoop fs -cp -p <src> <dest>。没用。

4

3 回答 3

3

是的,当然可以。但我建议您使用distcp,它是一种在集群之间或同一集群上复制数据的高级工具,您有很多选项可以优化执行。此命令将运行 mapreduce,因此对于长副本将花费更少的时间,并且您可以保留所有属性。

例子:

hadoop distcp /source_dir/data \
              /target_dir/data

hadoop distcp /source_dir/dataA \
              /source_dir/dataB \
              /target_dir/

对于所有属性:

  • r:复制数
  • b:块大小
  • 你:用户
  • g:组
  • p: 许可
  • c:校验和类型
  • 一:访问控制列表
  • x: XAttr
  • t:时间戳

另一个示例,但保留所有属性:

hadoop distcp -p rbugpcaxt \
              /source_dir/data \
              /target_dir/data 

您可以在hadoop-distcp上阅读有关此命令的更多信息 。最重要的不是所有者和组或权限,您可以在复制命令后轻松更改,最重要的属性是 ACL、块大小、复制数和一些时间时间戳,这是额外的属性,您在简单复制后无法轻易更改(hdfs dfs -cp)。

于 2018-10-11T08:44:17.223 回答
-1

没有,但您可以(假设您有适当的权限)在复制文件后更改所有权。

于 2013-11-03T23:07:30.223 回答
-1

目前无法在复制权限时创建文件的两个副本——但是,根据您的用例,一个选项可能是移动文件。例如,我不得不更改文件的位置及其权限,并且还想保留备份(权限无关紧要),因此我将权限移至新位置并复制回原始位置而没有。我知道这不是很有帮助,但这是我们目前在 Hadoop 中拥有的最好的。

于 2015-08-20T01:38:51.073 回答