E-MapReduce的HBase集群间迁移

HBase集群间数据迁移

0. 前置

HBase集群HDFS
Cluster-Ahdfs:/A
Cluster-Bhdfs:/B

Cluster-A集群数据迁移到Cluster-B

1. Export/Import

Cluster-A中HBase表exportCluster-B的HDFS中,然后在Cluster-B中使用import导入HBase

a) Cluster-A和Cluster-B网络通
  • Cluster-B中建好相关迁移的表
hbase(main):001:0>create 'TestTable', 'info'
  • Cluster-A中执行Export命令
sudo su hdfs
hbase org.apache.hadoop.hbase.mapreduce.Driver export TestTable hdfs://B:9000/hbase_tmp
  • Cluster-B中执行Import命令
sudo su hdfs
hbase org.apache.hadoop.hbase.mapreduce.Driver import TestTable hdfs://B:9000/hbase_tmp
  • 清理Cluster-B的HDFS中临时文件夹/hbase_tmp
hadoop fs -rmr /hbase_tmp
b) Cluster-A和Cluster-B网络不通

网络不通的情况下,可以将数据Export到OSS中,然后从OSS中Import

  • Cluster-B中建好相关迁移的表
hbase(main):001:0>create 'TestTable', 'info'
  • Cluster-A中执行Export命令导出到OSS
sudo su hdfs
hbase org.apache.hadoop.hbase.mapreduce.Driver export TestTable oss://$bucket/$path
  • Cluster-B中执行Import命令
sudo su hdfs
hbase org.apache.hadoop.hbase.mapreduce.Driver import TestTable oss://$bucket/$path
  • 清理OSS中临时文件夹

2. distcp

将Cluster-A中HDFS的表文件distcp拷贝到Cluster-B的HBase在HDFS中对应的目录

  • Cluster-A中将HBase的表在HDFS存储文件distcp到Cluster-B的HBase在HDFS中对应的目录(hdfs账户)
sudo su hdfs
hadoop distcp /hbase/data/default/* hdfs://B:9000/hbase/data/default

备注:

/hbase/data/default是E-MapReduce中HBase表在HDFS存储路径,例如表TestTable 的存储路径是/hbase/data/default/TestHbase, 可以只有单个表的路径,也可以是default下面所有表的路径(即*表示)

  • Cluster-B中执行HBase repair修复(hdfs账户)
 sudo su hdfs
 hbase hbck -repair 
 
    原文作者:MapReduce
    原文地址: https://yq.aliyun.com/articles/70469
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞