hbase之snapshot方式数据同步 hbase数据迁移

前提说明:

Hadoop: 3.0.0-cdh6.3.2

hbase : 2.1.0-cdh6.3.2

cluster01 的hdfs连接: 172.18.26.6:8020

cluster02 的hdfs连接:172.18.10.90:8020

cluster01 与 cluster02 网络端口相通

cluster01  172.18.26.6  备份机器

cluster02  172.18.10.90 恢复机器

snapshot备份默认已开启

cluster01  cluster02操作的时候最好用hbase用户操作 su - hbase

 

开始

我的方法是单个hbase的table进行snapshot备份,然后再传输到目标机器

1.snapshot备份(在cluster01 备份)

[root@cdh-master01 ~]# hbase shell

hbase(main):001:0>snapshot 'device','device_snapshot01'      #‘device’是table的名字,‘device_snapshot01’是备份快照名称

hbase(main):003:0> list_snapshots     #查看快照

SNAPSHOT                                          TABLE + CREATION TIME
device_snapshot01                               device (2020-12-18 19:07:18 +0800)

 

此时在hdfs路径下可以看到快照了

[root@cdh-master01 ~]#hadoop fs -ls hdfs://172.18.26.6:8020/hbase/.hbase-snapshot/                  #注意,我的hbase.rootdir是 /hbase,如果是别的请替换

drwxr-xr-x   - hbase hbase          0 2020-12-18 19:07 hdfs://172.18.26.6:8020/hbase/.hbase-snapshot/device_snapshot01

 

2.传输快照

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot device_snapshot01 \
-copy-from hdfs://172.18.26.6:8020/hbase \
-copy-to hdfs://172.18.10.90:8020/opt/hbase \
-mappers 16 \
-bandwidth 1024       #注意我的目标hbase的rootdir是不一样的

 

3. 恢复(在cluster02进行)

方式1:会覆盖原表device

hbase shell

disable device

restore_snapshot 'device_snapshot01'

enable device

方式2:恢复到新表device_new

clone_snapshot 'device_snapshot01','device_new'

 

 

4. 遇到问题

4.1 恢复的时候,卡死不动,等很久就报错

我发现是磁盘满了,删除没用数据请参考另一篇文章

4.2 提示权限问题

那就修改权限:

hadoop fs -chown -R hbase:hbase hdfs://172.18.10.90:8020/opt/hbase/archive/data/default/device_info/

hadoop fs -chmod -R 755 hdfs://172.18.10.90:8020/opt/hbase/archive/data/default/device_info/

 

posted @ 2020-12-19 18:02  嘿十三  阅读(904)  评论(0编辑  收藏  举报