千家信息网

Distcp 分布式拷贝

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,(1)discp原理DistCp(Distributed Copy)是用于大规模集群内部或者集群之间的高性能拷贝工具,和在linux上执行cp,scp实现效果是一致的,不同的是,cp是将本机的文件和目
千家信息网最后更新 2026年10月31日Distcp 分布式拷贝

(1)discp原理

DistCp(Distributed Copy)是用于大规模集群内部或者集群之间的高性能拷贝工具,和在linux上执行cp,scp实现效果是一致的,不同的是,cp是将本机的文件和目录拷贝到本机的其它地方,scp则可以将A机器的文件或者目录拷贝到B机器,而Distcp则可以实现的是A(hdfs)集群的数据拷贝到B(hdfs)集群,而分布式使得数据拷贝时,可以实现A级群的DN节点同时向B集群的DN节点发送数据,突破了单机拷贝的网卡速率限制,拷贝效率更高。

同时Distcp它使用Map/Reduce任务实现文件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝。(实际上Distcp只用到了map,没用用到reduce)。


(2)使用场景

1:数据异地灾备。

2:机房下线,数据迁移。

3:数据准实时同步。


(3)discp优势

1:支持带宽限流,可以使用bandwidth参数对distcp的每个map任务限流,同时控制map并发数量即可控制整个拷贝任务的带宽,防止拷贝任务将带宽打满,影响其它业务。


2:支持overwrite(覆盖写),update(增量写),delete(删除写)等多种源和目的校验的拷贝方式,大量数据的拷贝必然要做到数据拷贝过程中的校验,来保证源和目的数据的一致性。


(4)discp命令

  • 命令格式

hadoop distcp \-Dmapred.jobtracker.maxtasks.per.job=1800000 \   #任务最大map数(数据分成多map任务)-Dmapred.job.max.map.running=4000 \              #最大map并发-Ddistcp.bandwidth=150000000 \                   #带宽-Ddfs.replication=2 \                            #复制因子,两副本-Ddistcp.skip.dir=$skipPath \                    #过滤的目录(不拷贝的目录)-Dmapred.map.max.attempts=9 \                    #每个task最大尝试次数-Dmapred.fairscheduler.pool=distcp \             #指定任务运行的pool-pugp \                                          #保留属性(用户,组,权限)-i \                                             #忽略失败的task-skipcrccheck \                                  #忽略CRC校验(防止源,目标集群hdfs版本不一致导致任务失败。)hdfs://clusterA:9000/AAA/data  \                 #源地址hdfs://clusterB:9000/BBB/data                    #目标地址


(5)执行输出

[work@hq distcp]$ hadoop distcp \-Dmapred.jobtracker.maxtasks.per.job=1800000 \-Dmapred.job.max.map.running=4000 \-Ddistcp.bandwidth=150000000 \-Ddfs.replication=2 \-Dmapred.map.max.attempts=9 \-Dmapred.fairscheduler.pool=distcp \-pugp -i -skipcrccheck \hdfs://clusterA:9000/AAA/data \hdfs://clusterB:9000/BBB/data17/06/03 17:06:38 INFO tools.DistCp: srcPaths=[hdfs://clusterA:9000/AAA/data ]17/06/03 17:06:38 INFO tools.DistCp: destPath=hdfs://clusterB:9000/BBB/data17/06/03 17:06:39 INFO tools.DistCp: config no skip dir17/06/03 17:06:40 INFO tools.DistCp: sourcePathsCount=24117/06/03 17:06:40 INFO tools.DistCp: filesToCopyCount=24017/06/03 17:06:40 INFO tools.DistCp: bytesToCopyCount=0.017/06/03 17:06:40 INFO tools.DistCp: mapTasks: 117/06/03 17:06:40 INFO corona.SessionDriver: My serverSocketPort 3682217/06/03 17:06:40 INFO corona.SessionDriver: My Address 10.160.115.122:3682217/06/03 17:06:40 INFO corona.SessionDriver: Connecting to cluster manager at jobtracker:802117/06/03 17:06:40 INFO corona.SessionDriver: HeartbeatInterval=1500017/06/03 17:06:40 INFO corona.SessionDriver: Got session ID job_201706031706_26727017/06/03 17:06:40 INFO tools.DistCp: targetsize=26843545617/06/03 17:06:40 INFO tools.DistCp: targetfiles=50017/06/03 17:06:40 INFO corona.SessionDriver: Started session job_201706031706_26727017/06/03 17:06:45 INFO mapred.JobClient:  map 0% reduce 0/06/03 17:06:59 INFO mapred.JobClient:  map 3% reduce 0/06/03 17:07:01 INFO mapred.JobClient:  map 5% reduce 0/06/03 17:07:05 INFO mapred.JobClient:  map 6% reduce 0%.....17/06/03 17:11:15 INFO mapred.JobClient:  map 97% reduce 0/06/03 17:11:17 INFO mapred.JobClient:  map 100% reduce 0/06/03 17:11:25 INFO corona.SessionDriver: Stopping session driver



(6)主要参数

Hadoop 1版本


distcp [OPTIONS] *

选项:

-p [rbugp] 状态

r:复制数

b:块大小

u:用户

g:组

p:权限

t:修改和访问时间

-p单独相当于-prbugpt

-i 忽略失败

-basedir 从复制文件时,使用作为基本目录

-log 将日志写入

-m 最大并发副本数

-overwrite 覆盖目的地

-update 如果src大小与dst大小不同,则覆盖

-skipcrccheck 不要使用CRC检查来确定src是否是 不同于dest。

-copybychunk 剁碎和复制的文件

-f 将中的列表用作src列表

-filelimit 将文件的总数限制为<= n

-filelimitpermap 每个地图要复制的最大文件数

-sizelimit 将总大小限制为<= n个字节

-sizelimitpermap 每个映射要复制的最大字节数

-delete 删除dst中存在的文件,但不在src中

-mapredSslConf 映射器任务的SSL配置文件名

-usefastcopy 使用FastCopy(仅适用于DFS)


注1:如果设置了-overwrite或-update,则每个源URI和目标URI保持同级一致。

例如:

hadoop distcp -p -update hdfs://A:9000//home/aa hdfs://B:9000//home/bb


支持的通用选项是

-conf 指定应用程序配置文件

-D 给定属性的使用值

-fs 指定一个namenode

-jt 指定jobtracker在corona上

-jtold 指定jobtracker在mapreduce上

-files <逗号分隔的文件列表>指定要复制到map reduce cluster的逗号分隔文件

-libjars <逗号分隔的jars列表> 指定要包含在类路径中的逗号分隔的jar文件。

-archives <逗号分隔的归档列表> 指定要在计算机上取消归档的逗号分隔的归档。



Hadoop 2版本


用法:distcp OPTIONS [source_path ...]

OPTIONS

-append 重新使用目标文件中的现有数据并追加新的如果可能,给他们的数据

-async 应该是distcp执行阻塞

-atomic 提交所有更改或无

-bandwidth 以MB为单位指定每个map的带宽

-delete 从目标中删除,源文件丢失

-diff 使用snapshot diff报告来标识源和目标之间的差异

-f 需要复制的文件列表

-filelimit (已弃用!)限制复制到<= n的文件数

-i 在复制期间忽略故障

-log DFS上的distcp执行日志文件夹保存

-m 要用于副本的最大并发map数

-mapredSslConf 配置ssl配置文件,用于hftps://

-overwrite 选择无条件覆盖目标文件,即使它们存在。

-p 保留源文件状态(rbugpcaxt)

(复制,块大小,用户,组,权限,校验和类型,ACL,XATTR,时间戳)

如果-p是指定为no ,然后保留复制,块大小,用户,组,权限,校验和类型和时间戳。

原始的* xattrs是源和目的地都保留路径位于/.reserved/raw层次结构中(HDF只要)。原始*

xattrpreservation是独立的-p标志。请参阅DistCp文档更多细节。

-sizelimit (已弃用!)限制复制到<= n的文件数字节

-skipcrccheck 是否跳过源和源之间的CRC检查目标路径。

-strategy 复制策略使用。默认是分工基于文件大小

-tmp 要用于原子的中间工作路径承诺

-update 更新目标,仅复制missingfiles或目录


文件 拷贝 数据 任务 目标 最大 大小 目录 集群 带宽 限制 一致 权限 用户 目的 路径 配置 之间 件数 副本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东万易互联网科技有限公司惠州分公司 蓝思科技飞鸽互联网 科技信息互联网 金融科技创新监管互联网金融 互联网金融 科技创新 互联网科技大会案例 字节跳动和互联网科技 互联网公司科技股 卓翼科技产业互联网合作 美国互联网科技实力 每天都有哪些好的互联网科技 美国互联网科技公司 东营紫格互联网科技 上海乐五互联网科技有限公司 上海同邻互联网科技有限公司规模 广州梦谷互联网科技有限公司领导 互联网高科技行业有哪些企业 宁波允成互联网科技有限公司 银川新华互联网科技学校招聘 中国主要互联网科技公司 互联网和科技技术 远信互联网科技 云电互联网科技 北京禾田雨橡互联网科技 郑州华宇互联网科技 老年人脱离互联网科技的作文 互联网之后的科技是什么 哈尔滨屹滨互联网科技有限公司 中国互联网十大科技股排名 阿里互联网科技企业
0