【问题标题】:Can we run client programs written for HBase 0.94 using 0.94's client API on HBase 0.98 without having to modify or recompile them?我们可以在 HBase 0.98 上使用 0.94 的客户端 API 运行为 HBase 0.94 编写的客户端程序,而无需修改或重新编译它们吗?
【发布时间】:2014-11-25 16:36:28
【问题描述】:

这里的 HBase 新手试图获得一个使用 HBase 0.98.6 (CDH 5.2) 的 HBase 0.94.19 版本编写的客户端程序。我已将 HBase 0.98.6 的 jar 添加到此客户端的类路径中。我收到此错误:java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Increment.setWriteToWAL(Z)Lorg/apache/hadoop/hbase/client/Increment

我在两个版本中都看到了方法签名,确实返回类型有所不同。

0.94 的签名:http://hbase.apache.org/0.94/apidocs/org/apache/hadoop/hbase/client/Increment.html#setWriteToWAL(boolean) [public Increment setWriteToWAL(boolean writeToWAL] 的返回类型为 Increment。

0.98 的签名:http://archive.cloudera.com/cdh5/cdh/5/hbase/apidocs/org/apache/hadoop/hbase/client/Mutation.html#setWriteToWAL(boolean) [public void setWriteToWAL(boolean write) ]

我读到 Hadoop1 和 Hadoop2 是二进制兼容的,但我不确定这是否也扩展到 HBase。那么我可以以任何方式运行它,这样我就不必修改代码或重新编译它了吗?我想不会,但我想听听专家们的意见。

【问题讨论】:

    标签: hbase cloudera-cdh


    【解决方案1】:

    api 没有改变 mutch,可能有不推荐使用的方法,但大多数应该是相同的。 但是您必须针对新版本重新编译。即使我们尽量避免 api 更改太多,您至少必须在主要版本之间重新编译。

    在 94/96 之间,在 rpc 和有线协议方面也进行了重大重写,因此这也是您不能直接针对 96+ 服务器运行 94 客户端的另一个原因。

    【讨论】:

    • 谢谢,是的,看来我无法避免重新编译。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 2012-02-07
    相关资源
    最近更新 更多