跨集群hbase表迁移

HBase提供了copyTable,相当于distcp,但影响在线应用

使用创建快照,跨集群传送集群,然后再还原快照,这个方法的前提约束:两个集群hbase的版本必须一致

  1. 在源集群创建快照
snapshot 'v2', 'snapshot_v2'
  1. 传送快照
#有可能有路径用户权限问题
#export HADOOP_USER_NAME=hdfs

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snapshot_v2 -copy-to hdfs://cluster2:8020/hbase/ -mappers 16
  1. 在目标集群恢复快照
#注意:如果表v2没有,要先创建
disable 'v2'
restore_snapshot 'snapshotv2'
enable 'v2'

如果使用新表,可以用

clone_snapshot 'snapshot_v2', 'toc:v2'
  1. 异常处理
    如果出现表没存在,却提示已创建,list看不到,drop不到,那是ZooKeeper里面有了,中间信息,需要清理
zookeeper-client -server zkserver:2181
>
ls /hbase/table-lock
rmr /hbase/table-lock/v2
ls /hbase/table
rmr /hbase/table/v2
    原文作者:DeepMine
    原文地址: https://www.jianshu.com/p/5053d841561f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞