赞
踩
部分内容摘自尚硅谷、黑马等等培训资料
数据迁移指的是一种大规模量级的数据转移,转移的过程中往往会跨机房、跨集群
,数据迁移规模的不同会导致整个数据迁移的周期也不尽相同 。
在 HDFS 中,同样有许多需要数据迁移的场景,比如冷热数据集群之间的数据转化, 或者 HDFS 数据的双机房备份等等 。因为涉及跨机房 、跨集群,所以数据迁移不会是一个简单的操作。
DistCp 是 Apache Hadoop 中的一种流行工具,在 hadoop-tools 工程下,作为独立子工程存在。其定位就是用于数据迁移的,定期在集群之间和集群内部备份数据。(在备份过程中,每次运行 DistCp 都称为一个备份周期)尽管性能相对较慢,但它的普及程度已经越来越高。
DistCp底层使用MapReduce在群集之间或并行在同一群集内复制文件。执行复制的MapReduce只有mapper阶段。 它涉及两个步骤:
Update | 只拷贝不存在的文件或者目录 |
Append | 追加写目标路径下己存在的文件 |
Diff | 通过快照的diff对比信息来同步源端路径与目标路径 |
# hadoop distcp
usage: distcp OPTIONS [source_path...] <target_path>
-append //拷贝文件时支持对现有文件进行追加写操作
-async //异步执行distcp拷贝任务
-bandwidth <arg> //对每个Map任务的带宽限速
-delete //删除相对于源端,目标端多出来的文件
-diff <arg> //通过快照diff信息进行数据的同步
-overwrite //以覆盖的方式进行拷贝,如果目标端文件已经存在,则直接覆盖
-p <arg> //拷贝数据时,扩展属性信息的保留,包括权限信息、块大小信息等等
-skipcrccheck //拷贝数据时是否跳过cheacksum的校验
-update //拷贝数据时,只拷贝相对于源端 ,目标端不存在的文件数据
其中 source_path 、target_path 需要带上地址前缀以区分不同的集群,例如 :hadoop distcp hdfs://nn1:8020/foo/a hdfs://nn2:8020/bar/foo
上面的命令表示从nn1
集群拷贝/foo/a
路径下的数据到nn2
集群的/bar/foo
路径下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。