hdfs mv命令_hadoop – hdfs mv命令如何工作

我想知道hdfs中的mv命令是如何工作的?

>这只是一个没有任何实际数据移动的象征性变化吗?

>如果moveTo目录存在(可能在diff分区上)

>如果moveTo是一个新目录

>在hadoop中移动大文件时是否可能损坏数据?那么cp或distcp是一个更安全的选择吗?

当用户调用hdfs dfs -mv时,HDFS保证重命名操作的原子性.运行此命令时,客户端对NameNode进行RPC调用.此RPC的NameNode实现在修改inode树时保持锁定,并且只有在重命名完成后才会成功锁定或成功锁定. (由于许可或配额违规等原因,它可能会失败.)

由于实现完全在NameNode内执行并且仅操纵文件系统元数据,因此不涉及实际的数据移动.实际上,在hdfs dfs -mv命令期间,没有与DataNode的交互.所有文件的块保持不变,与inode关联的阻止列表保持不变. NameNode只是从一个位置获取该文件的inode,并将其移动到文件系统树中的另一个位置.不会破坏块数据.

由于NameNode提供了重命名的保证原子实现,因此也不存在元数据损坏的可能性.不可能最终处于“半完成”状态,文件存在于两个地方,甚至更糟,完全被删除.

现在我需要在上面的答案中添加一个微妙的变化.大多数情况下,在运行HDFS shell命令时,通常与HDFS作为后备文件系统进行交互.但是,这不是唯一可能的文件系统实现. Apache Hadoop发行版附带了S3,Azure Storage和OpenStack Swift的替代文件系统插件.还有许多供应商已经创建了自己的文件系统插件.这些备用文件系统是否提供原子重命名语义是这些其他文件系统的实现细节. S3和Swift插件实现重命名为copy-then-delete,因此它们绝对不提供原子性保证. Azure存储插件通过使用Azure存储blob租约确实为原子重命名提供了一些可选支持,但它不是默认行为.

此外,由于这个原因,不可能跨越不同的文件系统运行hdfs dfs -mv.您必须使用复制命令,然后它将涉及完整的数据副本.当您尝试跨文件系统重命名时会发生以下情况.该示例尝试在HDFS安装中为源文件和本地文件系统上的目标运行hdfs dfs -mv.该命令被拒绝.

> hdfs dfs -mv hdfs:///testData file:///tmp/testData

mv: `hdfs:///testData': Does not match target filesystem

问题的最后一部分询问复制时是否可能损坏数据. Hadoop将在读取文件时执行校验和验证,因此预计客户端不会看到损坏的数据. DistCp还可以执行源和目标之间的校验和比较作为后处理步骤.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要修改 HDFS 文件的权限,可以使用以下命令: 1. 查看文件或目录的权限信息: ```bash hadoop fs -ls /path/to/file_or_directory ``` 2. 修改文件或目录的权限: ```bash hadoop fs -chmod <MODE> /path/to/file_or_directory ``` 其中,`<MODE>` 可以使用数字或符号两种方式指定,如下所示: - 数字方式:将 3 个数字分别代表文件所有者、文件所属组、其他用户的权限设置为“读、写、执行”的组合,每个权限用 3 位二进制数表示,如 `rwx` 对应二进制数 `111`,表示可读、可写、可执行。 例如,将文件 `/user/hadoop/test.txt` 的权限设置为所有用户都可读取和执行,但只有文件所有者可写入,可以使用以下命令: ```bash hadoop fs -chmod 754 /user/hadoop/test.txt ``` - 符号方式:使用符号 `u`、`g`、`o` 和 `a` 分别表示文件所有者、文件所属组、其他用户和所有用户,`+` 和 `-` 分别表示添加和删除权限,`r`、`w` 和 `x` 分别表示读、写和执行权限。 例如,将文件 `/user/hadoop/test.txt` 的权限设置为所有用户都可读取和执行,但只有文件所有者可写入,可以使用以下命令: ```bash hadoop fs -chmod u+w,go=rx /user/hadoop/test.txt ``` 注意,如果要修改目录的权限,需要添加 `-R` 参数,以递归方式修改目录下的所有文件和子目录的权限。例如,将目录 `/user/hadoop/data` 及其子目录下的所有文件都设置为只读权限,可以使用以下命令: ```bash hadoop fs -chmod -R a-w /user/hadoop/data ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值