如何将现有hbase数据迁移到新集群

ao218c7q  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(555)

我有一个存储超过10tb数据的hbase集群,现在我必须将这些数据迁移到一个新的集群中,我该怎么做?
我知道hbase备份有完全关闭备份(distcp)和实时群集备份(复制、导出和copytable)。
在我的例子中,我们不能容忍定期完全关闭hbase集群,而且我知道复制不能复制历史数据,所以这意味着我们只能使用export或copytable?
我有两个问题:
1.我们应该使用export或copytable还是其他?为什么?
2.如果使用export或copytable,由于集群已启动,在复制过程中可能会丢失编辑,如何避免?

ftf50wuq

ftf50wuq1#

复制表
copytable将直接将数据写入现有的hbase表。这可以在同一集群或远程集群中完成。为了做到这一点,两个集群都应该在线。
出口
用于将hbase表的数据导出到hdfs文件夹中的纯序列文件的导出。将创建一个mapreduce作业,该作业将调用hbase集群从指定的表中获取数据并将其写入hdfs文件夹。
我更希望你使用复制表而不是出口,因为乔布斯先生需要时间。
参考:dzone hbase

brccelvz

brccelvz2#

给定两个集群,clustera,clusterb,tablex需要迁移。
将tablex从集群a迁移到集群b。
从a->b添加复制对等端'99'
在shell上,启用\u table \u复制'tablex'
在shell上,禁用\u peer'99'
在shell上,快照“tablex”,“tablex\u snapshot”
在计算机上,导出快照,bin/hbase org.apache.hadoop.hbase.snapshot.exportsnapshot-snapshot'tablex\u snapshot'-复制到hdfs://clusterb:8020/user/hbase-Map器16
在b shell上,还原\u snapshot'tablex \u snapshot','tablex'
在shell上,启用\u peer'99'
完成。

相关问题