在hadoop中复制文件时,有没有办法保留所有权/权限?尝试 hadoop fs -cp -p <src> <dest> . 没用。
hadoop fs -cp -p <src> <dest>
sxissh061#
没有,但是您可以(假设您有适当的权限)在复制文件后更改所有权。
epggiuax2#
当然可以。但我建议您使用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:校验和类型a:前交叉韧带x:xattr公司t:时间戳
hadoop distcp -p rbugpcaxt \ /source_dir/data \ /target_dir/data
您可以在hadoop distcp上阅读更多关于这个命令最重要的不是所有者和组或权限,您可以在copy命令之后轻松地更改它,最重要的属性是acl、块大小、复制编号,有时还有时间戳,这些是额外的属性,您在简单复制(hdfs dfs-cp)之后无法轻松地更改。
uqxowvwt3#
当前不可能在复制权限时创建文件的两个副本——但是,根据您的用例,可以选择移动文件。例如,我不得不更改一个文件的位置及其权限,还想保留一个备份(权限无关紧要),所以我带着权限移动到新位置,并复制回原始位置,而不带任何权限。我知道这不是很有帮助,但这是我们目前在hadoop中最好的。
3条答案
按热度按时间sxissh061#
没有,但是您可以(假设您有适当的权限)在复制文件后更改所有权。
epggiuax2#
当然可以。但我建议您使用distcp,它是一种高级工具,可以在集群之间或在同一集群上复制数据,您有很多选择来优化执行。这个命令将运行一个mapreduce,因此对于长时间的复制,它将花费更少的时间,并且您可以保留所有属性。
示例:
对于所有属性:
r:复制号
b:块大小
u:用户
g:集团
p:许可
c:校验和类型
a:前交叉韧带
x:xattr公司
t:时间戳
另一个示例,但保留所有属性:
您可以在hadoop distcp上阅读更多关于这个命令最重要的不是所有者和组或权限,您可以在copy命令之后轻松地更改它,最重要的属性是acl、块大小、复制编号,有时还有时间戳,这些是额外的属性,您在简单复制(hdfs dfs-cp)之后无法轻松地更改。
uqxowvwt3#
当前不可能在复制权限时创建文件的两个副本——但是,根据您的用例,可以选择移动文件。例如,我不得不更改一个文件的位置及其权限,还想保留一个备份(权限无关紧要),所以我带着权限移动到新位置,并复制回原始位置,而不带任何权限。我知道这不是很有帮助,但这是我们目前在hadoop中最好的。