【问题标题】:hbase ExportSnapshot from 0.94 to 0.98hbase ExportSnapshot 从 0.94 到 0.98
【发布时间】:2015-05-20 21:44:34
【问题描述】:

我们有两个集群,hbase 0.94,hadoop 1.04 和 hbase 0.98,hadoop 2.4 我已经从 0.94 快照上的表创建了一个快照,并希望将其迁移到使用 hbase 0.98 的集群。

在 0.98 集群上运行此命令后:

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snapshot-name -copy-from webhdfs://hadoops-master:9000/hbase -copy-to hdfs://solr1:8020/hbase

我明白了:

    Exception in thread "main" org.apache.hadoop.hbase.snapshot.ExportSnapshotException: Failed to copy the snapshot directory: from=webhdfs://hadoops-master:9000/hbase/.hbase-snapshot/snapshot-name to=hdfs://solr1:8020/hbase/.hbase-snapshot/.tmp/snapshot-name
    at org.apache.hadoop.hbase.snapshot.ExportSnapshot.run(ExportSnapshot.java:916)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.hadoop.hbase.snapshot.ExportSnapshot.innerMain(ExportSnapshot.java:1000)
    at org.apache.hadoop.hbase.snapshot.ExportSnapshot.main(ExportSnapshot.java:1004)
Caused by: java.net.SocketException: Unexpected end of file from server
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:772)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:769)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1323)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
    at org.apache.hadoop.hdfs.web.WebHdfsFileSystem$Runner.getResponse(WebHdfsFileSystem.java:596)
    at org.apache.hadoop.hdfs.web.WebHdfsFileSystem$Runner.run(WebHdfsFileSystem.java:530)
    at org.apache.hadoop.hdfs.web.WebHdfsFileSystem.run(WebHdfsFileSystem.java:417)
    at org.apache.hadoop.hdfs.web.WebHdfsFileSystem.getHdfsFileStatus(WebHdfsFileSystem.java:630)
    at org.apache.hadoop.hdfs.web.WebHdfsFileSystem.getFileStatus(WebHdfsFileSystem.java:641)
    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:337)
    at org.apache.hadoop.hbase.snapshot.ExportSnapshot.run(ExportSnapshot.java:914)
    ... 3 more

【问题讨论】:

    标签: hadoop hbase snapshot


    【解决方案1】:

    Lars Hofhansl 本人(HBase 的主要提交者和 0.94 的维护者)表示,从 0.94 和 0.98 开始不支持导出。因此,您可能无处可去。

    这是他今天下午的帖子的摘录:

    It's tricky from multiple angles:- replication between 0.94 and 0.98 does not work (there's a gateway process that supposedly does that, but it's not known to be very reliable)- snapshots cannot be exported from 0.94 and 0.98
    

    来源:今天 12/15/14 的 hbase 用户邮件列表

    更新 在 HBase 邮件列表中,有一份报告称一位用户能够找到一种方法来进行导出。其中一条信息是:

    If exporting from an HBase 0.94 cluster to an HBase 0.98 cluster, you will need to use the webhdfs protocol (or possibly hftp, though I couldn’t get that to work). You also need to manually move some files around because snapshot layouts have changed. Based on the example above, on the 0.98 cluster do the following:
    
       check whether any imports already exist for the table:
    
      hadoop fs -ls /apps/hbase/data/archive/data/default
    

    我在这里复制整个讨论是不正确的:包含整个血腥细节的 nabble 链接是:

    http://apache-hbase.679495.n3.nabble.com/0-94-going-forward-td4066883.html

    【讨论】:

      【解决方案2】:

      我正在深入研究这个问题,它与底层 HDFS 有更多关系。

      一旦写入流(在我的情况下是 distcp),就会调用 close:

      public void close() throws IOException {
      try {
            super.close();
          } finally {
            try {
              validateResponse(op, conn, true);
            } finally {
              conn.disconnect();
            }
          }
        }
      

      其中验证响应调用失败(可能连接的另一端已关闭)。

      这可能是由于 HDFS 1.0 和 2.4 不兼容!

      【讨论】:

        【解决方案3】:

        我已经用 jarjar https://code.google.com/p/jarjar/ 重新打包了 hadoop 和 hbase 库 它需要修复一些类名问题。 然后我写了一个 mapreduce copyTable 作业。它从 94 个集群中读取行并写入 98 个集群。 这是代码: https://github.com/fiserro/copy-table-94to98

        感谢 github.com/falsecz 的想法和帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-15
          • 2015-08-18
          • 1970-01-01
          相关资源
          最近更新 更多