Hadoop 命令之 distcp 、hdfs 协议 、hftp 协议、 webhdfs 协议 ,数据迁移 备份

distcp是Hadoop提供的用于在集群间复制大文件或目录的工具,支持数据迁移和备份。它基于MapReduce但仅使用Map阶段。复制过程中,可以通过选项如-overwrite和-update控制文件覆盖行为。默认情况下,每个节点最多分配20个map任务,可通过-m参数调整。对于不同版本集群间的复制,可使用HFTP或WebHDFS协议解决RPC不兼容问题。
摘要由CSDN通过智能技术生成

distcp 是 Hadoop 自带的分布式复制程序,该程序可以在 Hadoop 集群间实现(大)文件夹或者(大)文件的复制,可以用来数据迁移,数据备份等。

# 相同版本的hadoop集群
hadoop distcp hdfs://namenode1/foo hdfs://namenode2/bar

注意,源路径必须是绝对路径。

distcp 的选项

不加任何选项    默认目标路径存在文件则跳过
-overwrite    覆盖目标文件,无论是否修改
-update       覆盖有改动的目标文件

distcp 的底层原理

distcp 底层是跑 MapReduce 程序,只用 Map 完成,不需要 Reduce。

合理设置map个数


map 的数量是这样确定的。

让每一个 map 复制合理的数据量来尽量减少构建任务时所涉及的开销,这是一个很好的想法,所以每个 map 至少复制256MB数据(除非输入的总数据量较少,否则一个 map 就可以完成所有的复制)。
通。

如果数据非常大则有必要限制 map 的数量进而限制带宽和集群的使用。
默认情况下,每个集群节点最多分配20个map任务。

过对 distcp 指定 -m 参数,可以减少分配的map任务数。
例如,-m 1000 将分配 1000 个 map 任务

HFTP 协议

上面是 hdfs 协议,适合相同版本的集群,如果是不同版本的,建议使用 HFTP 协议。

# 版本不同,两个系统版本的 RPC 是不兼容的。想要弥补这种情况,可以使用基于只读 HTTP 协议的 HFTP 文件系统并从源文件系统中读取数据。并且这个作业必须运行在目标集群上,进而实现 HDFS RPC 版本的兼容。注意,需要在 URI 源中指定 namenode 的 Web 端口。这是由 dfs.http.address 属性决定的,其默认值为50070
hadoop distcp hftp://namenode1:50070/foo hdfs://namenode2/bar

webhdfs 协议

使用 webhdfs 协议(替代hftp)后,对源集群和目标集群均可以使用HTTP协议进行通信,且不会造成任何不兼容的问题

hadoop distcp webhdfs://namenodel: 50070/foo webhdfs://namenode2:50070/bar
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值