HBase提供了copyTable,相当于distcp,但影响在线应用
使用创建快照,跨集群传送集群,然后再还原快照,这个方法的前提约束:两个集群hbase的版本必须一致
- 在源集群创建快照
snapshot 'v2', 'snapshot_v2'
- 传送快照
#有可能有路径用户权限问题
#export HADOOP_USER_NAME=hdfs
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snapshot_v2 -copy-to hdfs://cluster2:8020/hbase/ -mappers 16
- 在目标集群恢复快照
#注意:如果表v2没有,要先创建
disable 'v2'
restore_snapshot 'snapshotv2'
enable 'v2'
如果使用新表,可以用
clone_snapshot 'snapshot_v2', 'toc:v2'
- 异常处理
如果出现表没存在,却提示已创建,list看不到,drop不到,那是ZooKeeper里面有了,中间信息,需要清理
zookeeper-client -server zkserver:2181
>
ls /hbase/table-lock
rmr /hbase/table-lock/v2
ls /hbase/table
rmr /hbase/table/v2