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

Posted

技术标签:

【中文标题】如何将 hbase 表从 hbase-0.94 集群复制到 hbase-0.98 集群【英文标题】:How to copy hbase table from hbase-0.94 cluster to hbase-0.98 cluster 【发布时间】:2016-07-26 23:19:12 【问题描述】:

我们有一个带有hadoop-1.0.1hbase-0.94 集群。我们不希望此集群在使用hadoop-2.5.1 升级到hbase-0.98 时出现停机时间

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

请提出执行上述任务的方法。

【问题讨论】:

【参考方案1】:

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

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

    第二个选项是给我们CopyTable工具,请看: http://hbase.apache.org/book.html#copytable 看看pivotal

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

HBase 快照允许您拍摄一张表的快照,而无需太多 对 Region Server 的影响很大。快照、克隆和还原操作 不涉及数据复制。此外,将快照导出到另一个 集群对 Region Servers 没有影响

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

Also, have a look at my answer posted

【讨论】:

您的建议很好,但只有在不同集群安装了兼容版本的hadoop和base时才有效。就我而言,有些版本不兼容:hadoop-1.0.1 到 hadoop-2.5.1 和 hbase-0.94.1 到 hbase-0.98。我已经尝试了选项 1 和 2,但它不起作用。【参考方案2】:

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

/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>

【讨论】:

以上是关于如何将 hbase 表从 hbase-0.94 集群复制到 hbase-0.98 集群的主要内容,如果未能解决你的问题,请参考以下文章

将一张表的数据从 HBase 0.94 复制到 HBase 0.98

hbase-0.94 Java API

软件Nutch2.3 + HBase 0.94 + Solr 搭建网络数据采集器

如何将百万歌曲数据集等大数据集加载到 BigData HDFS 或 Hbase 或 Hive 中?

将表从 google bigquery 导出到 google 存储

无法从 HBase 导出表