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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM