【发布时间】: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 似乎不适用于此目的。
请提出执行上述任务的方法。
【问题讨论】:
我们有一个带有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 似乎不适用于此目的。
请提出执行上述任务的方法。
【问题讨论】:
这些是可用的选项,您可以从中选择。
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 中 是更好的解决方案。
【讨论】:
在源集群上运行以下命令,确保您已启用跨集群身份验证。
/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>
【讨论】: