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

时间:2017-05-18 08:51:44

标签: hadoop hbase hdfs

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

我知道Hbase备份有完全关闭备份(Distcp)和Live Cluster Backup(复制,导出和CopyTable)。

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

我有两个问题:

1.我们应该使用Export或CopyTable还是其他人?为什么呢?

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

2 个答案:

答案 0 :(得分:1)

<强> CopyTable

CopyTable将直接将数据写入现有的HBase表。这可以在同一群集或远程群集中完成。 两个集群都应该在线,以便完成这项工作。

导出

导出用于将HBase表的数据导出到HDFS文件夹中的普通序列文件。创建一个MapReduce作业,该作业将调用HBase集群从指定的表中获取数据并将其写入HDFS文件夹。

我希望您使用copytable而不是导出,因为MR作业需要时间。

参考:Dzone HBase

答案 1 :(得分:0)

给定两个集群ClusterA,ClusterB,tablex需要迁移。

将tablex从CLuster A迁移到Cluster B.

  1. 添加复制同行&#39; 99&#39;来自A-> B
  2. on a shell,enable_table_replication&#39; tablex&#39;
  3. on a shell,disable_peer&#39; 99&#39;
  4. on a shell,snapshot&table;&#39; tablex_snapshot&#39;
  5. on A machine,export snapshot,bin / hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot&quot; tablex_snapshot&#39; -copy-to hdfs:// clusterB:8020 / user / hbase -mappers 16
  6. 在B shell上,restore_snapshot&#39; tablex_snapshot&#39;,&#39; tablex&#39;
  7. on a shell,enable_peer&#39; 99&#39;
  8. 进行。