说明:原集群为散装集群,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
目标集群下:
5、修改权限(重要,否则重启habse失败)
hadoop fs -chown -R hbase:hbase /hbase/
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'
6.3 通过count命令校验数据
count 'test_meter_data'