Distcp分布式拷贝-创新互联-成都快上网建站

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/data

17/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/data
17/06/03 17:06:39 INFO tools.DistCp: config no skip dir
17/06/03 17:06:40 INFO tools.DistCp: sourcePathsCount=241
17/06/03 17:06:40 INFO tools.DistCp: filesToCopyCount=240
17/06/03 17:06:40 INFO tools.DistCp: bytesToCopyCount=0.0
17/06/03 17:06:40 INFO tools.DistCp: mapTasks: 1
17/06/03 17:06:40 INFO corona.SessionDriver: My serverSocketPort 36822
17/06/03 17:06:40 INFO corona.SessionDriver: My Address 10.160.115.122:36822
17/06/03 17:06:40 INFO corona.SessionDriver: Connecting to cluster manager at jobtracker:8021
17/06/03 17:06:40 INFO corona.SessionDriver: HeartbeatInterval=15000
17/06/03 17:06:40 INFO corona.SessionDriver: Got session ID job_201706031706_267270
17/06/03 17:06:40 INFO tools.DistCp: targetsize=268435456
17/06/03 17:06:40 INFO tools.DistCp: targetfiles=500
17/06/03 17:06:40 INFO corona.SessionDriver: Started session job_201706031706_267270
17/06/03 17:06:45 INFO mapred.JobClient:  map 0% reduce 0%
17/06/03 17:06:59 INFO mapred.JobClient:  map 3% reduce 0%
17/06/03 17:07:01 INFO mapred.JobClient:  map 5% reduce 0%
17/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%
17/06/03 17:11:17 INFO mapred.JobClient:  map 100% reduce 0%
17/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或目录

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前文章:Distcp分布式拷贝-创新互联
本文来源:http://kswjz.com/article/dhoiis.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流