2017-05-18 53 views
0

我拥有一个存储超过10TB数据的Hbase集群,现在我必须将这些数据迁移到新的集群中,我该怎么做?如何将现有的Hbase数据迁移到新集群

我知道Hbase备份有完整的关闭备份(Distcp)和Live群集备份(复制,导出和复制表)。

在我的情况下,我们不能容忍定期关闭我们的Hbase集群,并且我知道Replication无法复制历史数据,所以这意味着我们可以使用Export或CopyTable?


我有两个问题:我们使用导出或CopyTable或他人

1.Should?为什么?

2.如果我们使用Export或CopyTable,由于集群已启动,在复制过程中可能会错过编辑,如何避免它?

回答

0

CopyTable

CopyTable将直接将数据写入到一个现有的HBase的表。这可以在同一个群集或远程群集中完成。 这两个群集都应该联机以完成此操作。用来HBase的表中的数据导出为纯序列文件在HDFS文件夹

出口

出口。创建一个MapReduce作业,调用HBase集群从指定表中获取数据并将其写入HDFS文件夹。

我宁愿你使用copytable而不是export,因为MR作业需要时间。

参考:Dzone HBase

+0

谢谢您的回答〜我知道我们可以使用CopyTable,但参考指南中提到“由于集群已启动,复制过程中可能会错过编辑的风险”,因此如何避免此问题? –

0

给出了两个集群,clusteA在,ClusterB,一个TableX的需要迁移。

从簇A迁移TableX的到群集B.

  1. 添加复制对等 '99' 从A-> B
  2. 上形成壳,enable_table_replication 'TableX的'
  3. 上形成壳,disable_peer' 99' TableX的 ' 'tablex_snapshot'
  4. 的机器上,出口的快照,斌/ HBase的org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 'tablex_snapshot' -copy到上的一个壳,快照
  5. ' HDFS:// clusterB:8020/U SER/HBase的第B壳,restore_snapshot 'tablex_snapshot', 'TableX的'
  6. 上形成壳,enable_peer '99'

完成-mappers 16

  • 相关问题