Hbase跨集群数据迁移-快照方式

说明:原集群为散装集群,hbase版本为1.1.1,hadoop2.7.2;目标集群通过CDH5搭建,hbase版本为1.2.0,hadoop2.6.0。由于业务需要原集群不能停,目前数据基本在hbase上。所以计划使用hbase快照使用数据迁移。

1、原集群 hbase shell中创建快照

#查看已有快照
list_snapshots
#创建快照
snapshot 'test_meter_data','test_meter_data-20190424'
#如果快照创建有问题,可以先删除,用delete_snapshot命令
delete_snapshot 'xxxxxx'

2、两集群安全组相互开放端口(内网ip和外网ip都要)[阿里云服务器]

3、将root用户添加到supergroup组(已有忽略)

groupadd supergroup
usermod -a -G supergroup root

4、迁移数据

拉取方式(推荐:由于旧集群资源不足):在目标集群执行
注意:在本地执行的时不要使用被机器的外网ip。
语法:

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot snapshot_src_table \ 
-copy-from hdfs://xxxx:9000/src-hbase-root-dir/hbase \
-copy-to hdfs://xxxx:9000/dst-hbase-root-dir/hbase \
-mappers 20 \
-bandwidth 20

推送方式:在原集群执行

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot test_meter_data-20190424 -copy-to 
hdfs://xxxx:8020/hbase -mappers 5 -bandwidth 10 -overwrite

目标集群下:

Hbase跨集群数据迁移-快照方式_第1张图片

5、修改权限(重要,否则重启habse失败)

hadoop fs -chown -R hbase:hbase /hbase/
Hbase跨集群数据迁移-快照方式_第2张图片

6、目标集群创建新表

6.1 根据旧集群hbase表的describe信息,在新集群创建同样的hbase表(必须同名)

create 'test_meter_data', {NAME => 'f1',COMPRESSION => 'SNAPPY'}, { NUMREGIONS => 3, SPLITALGO => 'HexStringSplit'}

6.2 使用快照还原表
进入目标集群hbase shell

#先禁用表
disable 'test_meter_data'
restore_snapshot 'test_meter_data-20190424'
#等待COMPLETE完成再启用
enable 'test_meter_data'
Hbase跨集群数据迁移-快照方式_第3张图片

6.3 通过count命令校验数据

count 'test_meter_data'

你可能感兴趣的:(Hbase跨集群数据迁移-快照方式)