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

Hadoop 如何将hbase表从hbase-0.94群集复制到hbase-0.98群集,hadoop,hbase,Hadoop,Hbase,我们有一个hbase-0.94集群和hadoop-1.0.1。我们不希望在使用hadoop-2.5.1升级到hbase-0.98时出现此群集的停机 我已使用hadoop-2.5.1配置了另一个hbase-0.98群集,并希望将hbase-0.94表复制到hbase-0.98HbaseCopyTable似乎不适用于此目的 请建议执行上述任务的方法。这些是可用选项,您可以从中选择 您可以使用org.apache.hadoop.hbase.mapreduce.Export工具 将表导出到HDFS,然后

我们有一个
hbase-0.94
集群和
hadoop-1.0.1
。我们不希望在使用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
    导入表的工具。 请看
  • 第二个选项是我们的
    CopyTable
    工具,请查看: 看看

  • 第三个选项是启用hbase快照,创建表 快照,然后使用
    ExportSnapshot
    工具将它们移动到第二个集群。当快照位于第二个群集上时,可以从快照克隆表。请看:

  • HBase快照允许您拍摄表的快照,而不需要太多的时间 对区域服务器有很大影响。快照、克隆和恢复操作 不要涉及数据复制。此外,还可以将快照导出到另一个快照 群集对区域服务器没有影响

    我使用1和3在集群之间移动数据,在我的案例3中我使用了1和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>
    
    /usr/bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable-Ddfs.nameservices=nameservice1,devnameservice-Ddfs.ha.namenodes.devnameservice=devn1,devnn2-Ddfs.namenode.rpc address.devnameservice.devnn1=:-Ddfs.namenode.rpc address.devnameservice.devnn2=:-Ddfs.client.failover.proxy.provider.devnameservice=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider-Dmapred.map.tasks.Procurative=false---peer.adr=:/hbase--versions=
    
    您的建议很好,但只有在不同的集群安装了兼容版本的hadoop和base时才有效。在我的例子中,有两个版本不兼容:hadoop-1.0.1到hadoop-2.5.1和hbase-0.94.1到hbase-0.98。我已经尝试了选项1和2,但都不起作用。