分享在做数据迁移方案时,因两个集群的hbase、hadoop版本不一致,采用了以下方案步骤:
1、需要在old cluster hbase停掉的情况下迁移或者停止收集数据进入hbase,保证迁移后的数据一致性
2、两个集群必须都配置外网IP,且new cluster每台服务器要把old cluster的所有外网IP、主机名配置hosts
3、在new cluster上执行hadoop distcp -skipcrccheck -update -i -m 200 <src> <target>,具体命令参数代表什么意思,如不明白的请看官方文档,本人在迁移用到的命令hadoop distcp -skipcrccheck -update -i -m 200 hftp://xxx.xxx.xxx.xxx:50070/hbase/表名 hdfs://xxx.xxx.xxx.xxx:9000/hbase/data/default/表名,路径查看hbase的存储配置即可知道
4、迁移完后需要在new cluster执行以下修复命令、一般执行前三个就可以进行修复了,如果还不行再执行第四个命令,为了方便写了批量迁移脚本修复 ,全部命令执行,出现 Status: OK表示成功:
hbase hbck -fixTableOrphans 表名
hbase hbck -fixMeta 表名
hbase hbck -fixAssignments 表名
hbase hbck -repair 表名
对于数据量特别大的,带宽(old cluster可视情况加大,new cluster能通信即可,对带宽无要求),提高迁移速度,同时请考虑流量费用,毕竟是外网传输,内网迁移可以忽略,迁移过程遇到的各种问题,绝对是个挑战,祝君迁移顺利