Hbase表跨集群迁移手册

Hbase表跨集群迁移手册

将旧集群的namespaceA下的表移到新集群的namespaceB下面

 

1、检查新、旧集群的hdfs、hbase是否正常

 (1)使用命令:hbase hbck    #查看hbasemeta表情况,确认0个,说明hdfs中的数据和hbase表中的meta表是对应的。

(2)使用hdfs dfsadmin –report

查看集群中的hdfs是否有block异常

查看无异常以后,继续前进。。。
 

2、将旧集群文件数据复制至新集群


(1)前面确认好两个集群都OK后,去旧集群的hdfs文件里get表文件下来,为防止影响hdfs中的数据,我们首先将数据复制到hdfs中的tmp目录,然后再get到本地。
命令为:
hadoop  fs  –cp  /hbase/data/namespaceA/testTable  /hbase/tmp
hadoop  fs  –get  /hbase/tmp/ testTable /tmp/hbase_bak 

 

(3)将旧集群的本地文件复制到新集群中,若可以通信,
(注意做操作的节点最好是大内存的,或者调大节点的jvm)
使用命令:scp  -rp  /tmp/hbase_bak/ testTable  新集群中的一个节点ip:/tmp/hbase_bak

 

3、将旧集群文件数据testTable加入新集群的hdfs的相同命名空间文件目录下。

  因为是跨命名空间迁移hbase表,对应hdfs文件会携带源命名空间信息,所以不能直接跨命名空间导入新表,解决这个问题,可以采用下面的方式
(1)在新集群中新建一个和旧集群一样的命名空间namespaceA,再将旧集群的testTable文件,导入新集群的hdfs中,具体命令如下:
create_namespace 'namespaceA'

hadoop fs -put  /tmp/hbase_bak /testTable /hbase/data/ namespaceA /testTable  #添加数据到hdfs文件中

hbase hbck -repair ' namespaceA: testTable '

OK 修复成功!!!(hbase里的meta表和hdfs中的文件匹配一致)

为了验证是否成功
需要进入hbase里查看是否已经真的导入表了。
 

(2)同集群跨命名空间表复制
 

create_namespace 'namespaceB'    
#在新集群新建namespaceB这个命名空间

 

create ‘namespaceB:testTable’      
#在新集群新建namespaceB:testTable这个表,须与namespaceB中的testTable表结构一致。

 

 

hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name="namespaceB:testTable"  namespaceA:testTable

 

 

当map值达到100%后,会结束这个进程。

Hbase shell

进入hbase中查看是否已成功将testTable表导入namespaceB命名空间下。

 

list
scan 'namespaceA: testTable', {LIMIT => 2}

 

到这里,这张表就复制到新的集群里了,跨集群跨命名空间复制表已完成

 

4、生产环境,如果在新集群的namespaceA下的也存在同名的testTable表,那用上面的方法是行不通的。

可使用下面的方案,前提是有测试集群

用自己的测试集群解决跨命名空间的问题,

就是在测试集群里分别建namespaceA和namespaceB两个命名空间,将新集群的testTable表复制到测试环境的namespaceA里,再进行put和repair操作,步骤和上面的一样。

create_namespace 'namespaceA’

create_namespace 'namespaceB’

 

old集群namespaceA的testTable文件——à测试集群namespaceA——àput+repair

测试集群namespaceA的testTable表——à测试集群namespaceB

测试集群namespaceB的testTable文件——ànew集群namespaceB——àput+repair

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值