我们有一个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
似乎无法实现此目的。
请建议一种执行上述任务的方法。
答案 0 :(得分:2)
这些是可用选项,您可以选择。
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 Snapshots允许您不用拍摄快照 对Region Servers的影响很大。快照,克隆和还原操作 不涉及数据复制。此外,将快照导出到另一个 集群对区域服务器没有影响
在我的情况下,我使用1和3来在群集之间移动数据 是更好的解决方案。
答案 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>