hadoop数据迁移
数据迁移使用场景:
- 冷热集群数据分类存储
- 集群数据搬迁,当公司的业务迅速的发展,导致当前的服务器数量资源出现临时紧张的时候,为了更高效的利用资源,会将原A机房数据整体迁移到B机房的,原因可能是B机房机器多,而且B机房本身开销较A机房成本低些等.
- 数据的准实时同步.数据的准实时同步与上一点的不同在于第二点可以一次性操作解决,而准实时同步需要定期同步,而且要做到周期内数据基本完全一致.数据准实时同步的目的在于数据的双备份可用,比如某天A集群突然宣告不允许再使用了,此时可以将线上使用集群直接切向B的同步集群,因为B集群实时同步A集群数据,拥有完全一致的真实数据和元数据信息,所以对于业务方使用而言是不会受到任何影响的.
hadoop集群间数据拷贝
将源hadoop节点的数据拷贝到新的集群节点,一定要保证新集群所有节点可以ping通老集群的所有节点
前提条件
需要将数据源集群的/etc/hosts中的hadoop节点拷贝到目标集群所有节点的/etc/hosts中
配置当前集群主节点到老集群各个节点的ssh免密登陆(可选)
如果新集群与老集群的版本不一致 不能使用hdfs协议 需要使用http协议,即不能使用
distcp hdfs://src:50070/文件目录 /文件目录
而使用 distcp hftp://src:50070/文件目录 /文件目录
DistCp优势特性
1 带宽限流
DistCp是支持带宽限流的,使用者可以通过命令参数bandwidth来为程序进行限流,原理类似于HDFS中数据Balance程序的限流.
2 增量数据同步
update: Update target, copying only missing files or directories
append: Reuse existing data in target files and append new data to them if possible.
第一个参数,解决了新增文件目录的同步;第二参数,解决已存在文件的增量更新同步;
DistCp速度说明
distcp吞吐很大,理论上来说受限于网络带宽以及目标集群的写性能
数据同步
1. 全量数据同步
# eg:bin/hadoop distcp -skipcrccheck -m 20 hdfs://192.168.1.7:9000/ hdfs://192.168.1.8:9000/
-m 表示并发数
-skipcrccheck 跳过hdfs校验
-update 更新文件
# 命令 进入hadoop的解压目录下 在hadoop集群的namenode节点操作
bin/hadoop distcp -skipcrccheck -m 20 hdfs://namenodeIP:9000/ hdfs://namedodeIP:9000/
2.增量数据同步
# eg :bin/hadoop distcp -skipcrccheck -update -m 20 hdfs://192.168.1.7:9000/ hdfs://192.168.1.8:9000/
bin/hadoop distcp -skipcrccheck -update -m 20 hdfs://namenodeIP:9000/ hdfs://namenodeIP:9000/
3.删除或重命名文件的同步
# eg: bin/hadoop distcp -skipcrccheck -update -delete -m 20 hdfs://192.168.1.7:9000/ hdfs://192.168.1.8:9000/
bin/hadoop distcp -skipcrccheck -update -delete -m 20 hdfs://namenodeIP:9000/ hdfs://namenodeIP:9000/