如何将 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.1
的hbase-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
软件Nutch2.3 + HBase 0.94 + Solr 搭建网络数据采集器
如何将百万歌曲数据集等大数据集加载到 BigData HDFS 或 Hbase 或 Hive 中?