hbase1向hbase2表迁移

hbase1版本向hbase2版本表数据迁移;

 

#这里使用hbase的 Snapshot功能实现

 

1、源集群 flush刷新内存数据到磁盘
hbase> flush 'tablename'

  并且,如果条件允许,尽可能disable表;

 

2、源集群 ,创建表快照

hbase> snapshot  '表名', '快照名'      #创建命令

查看快照命令:list_snapshots
删除快照命令:delete_snapshot

我这里是已经disable表了

 

 将快照目录和表目录导出到主机本地:

 

3、传输数据到目标集群

这里采取通过手动方式(distcp,scp,hdfs dfs -cp)直接把源hbase目录下的快照目录和数据目录拷贝到目标集群;

集群间通的话,也可以使用MR任务去传输; 

 

把源集群的快照目录和表目录scp到目标集群的主机上:

scp -r app_precision_marketing.label_precision_marketing_user_internal_little root@172.xx.xx.xx:/tmp/

scp -r snapshot_app_precision_marketing.label_precision_marketing_user_internal_little root@172.xx.xx.xx:/tmp/

 

4、[目标集群] 把从源集群传过来的快照目录和表目录上传到hbase的数据目录中

保证目标集群中没有这张表,如果有的话,并且不用的话,可以删除,参考:hbase2强制删除表 - 秋刀鱼的滋味w - 博客园 (cnblogs.com)

如果目标集群中已经存在这张表,是不能迁移的;

 

 

看一下HDFS上的目录权限是否正确,不正确的话需要更改权限;

 

5、目标集群

使用clone_snapshot 'snapshot_name, 'tableName' 修复元数据

 

可见表已经出现了,并且可以查询了:

 

posted @ 2022-01-06 17:39  米兰的小铁將  阅读(327)  评论(0编辑  收藏  举报