在Hadoop中复制文件时,有什么方法可以保留所有权/权限吗?试过hadoop fs -cp -p <src> <dest>
.没用。
是的,当然可以。但我建议你使用distcp,这是一个在集群之间或同一集群上复制数据的高级工具,你有很多选择来优化执行。此命令将运行 mapreduce,因此对于长副本,它将花费更少的时间,并且您可以保留所有属性。
例:
hadoop distcp /source_dir/data
/target_dir/data
hadoop distcp /source_dir/dataA
/source_dir/dataB
/target_dir/
对于所有属性:
- R:复制编号
- B:块大小
- U:用户
- G:组
- P:权限
- C:校验和类型
- 答:前交叉韧带
- x: XAttr
- t:时间戳
另一个示例,但保留所有属性:
hadoop distcp -p rbugpcaxt
/source_dir/data
/target_dir/data
您可以在hadoop-distcp上阅读有关此命令的更多信息最重要的不是所有者和组或权限,你可以在复制命令后轻松更改它,最重要的属性是ACL,块大小,复制数,以及有时时间戳,这是额外的属性,你不能在简单的复制后那么容易地改变(hdfs dfs -cp)。
没有,但您可以在复制文件后(假设您具有适当的权限)更改所有权。
目前无法在复制权限时创建文件的两个副本 -- 但是,根据您的用例,可以选择移动文件。例如,我不得不更改文件的位置及其权限,并且还想保留备份(权限无关紧要),因此我以权限移动到新位置并复制回原始位置。我知道这不是很有帮助,但这是我们目前在Hadoop中最好的