如何将hbase表从hbase-0.94集群复制到hbase-0.98集群

时间:2016-07-26 23:19:13

标签: hadoop hbase

我们有一个hbase-0.94群集hadoop-1.0.1。我们不希望在使用hbase-0.98

升级到hadoop-2.5.1时,此群集的停机时间

我已经使用hadoop-2.5.1配置了另一个hbase-0.98群集,并希望将hbase-0.94表复制到hbase-0.98。 Hbase CopyTable似乎无法实现此目的。

请建议一种执行上述任务的方法。

2 个答案:

答案 0 :(得分:2)

这些是可用选项,您可以选择。

  1. 您可以使用org.apache.hadoop.hbase.mapreduce.Export工具  将表导出到HDFS,然后您可以使用hadoop distcp将数据移动到      另一个集群。当数据放在第二个集群上时,您可以使用         org.apache.hadoop.hbase.mapreduce.Import工具导入表格。  请查看http://hbase.apache.org/book.html#export
  2. 第二个选项是我们的CopyTable工具,请看:         http://hbase.apache.org/book.html#copytable     请查看pivotal

  3. 第三个选项是启用hbase快照,创建表  快照,然后使用ExportSnapshot工具将它们移动到第二个群集。当快照位于第二个群集上时,您可以从快照克隆表。请查看:http://hbase.apache.org/book.html#ops.snapshots

  4.   

    HBase Snapshots允许您不用拍摄快照   对Region Servers的影响很大。快照,克隆和还原操作   不涉及数据复制。此外,将快照导出到另一个   集群对区域服务器没有影响

    在我的情况下,我使用1和3来在群集之间移动数据 是更好的解决方案。

    Also, have a look at my answer posted

答案 1 :(得分:0)

在源群集上运行以下命令,确保已启用跨群集身份验证。

/usr/bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable -Ddfs.nameservices=nameservice1,devnameservice -Ddfs.ha.namenodes.devnameservice=devnn1,devnn2 -Ddfs.namenode.rpc-address.devnameservice.devnn1=<destination_namenode01_host>:<destination_namenode01_port> -Ddfs.namenode.rpc-address.devnameservice.devnn2=<destination_namenode02_host>:<destination_namenode02_port> -Ddfs.client.failover.proxy.provider.devnameservice=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider -Dmapred.map.tasks.speculative.execution=false --peer.adr=<destination_zookeeper host>:<port>:/hbase --versions=<n> <table_name>