我想写Scalding作业必须连接到HBase,但我有麻烦使用HBase水龙头。我试过使用Twitter Maple提供的tap,在this example project之后,但似乎我使用的Hadoop/HBase版本与Twitter用作客户端的版本不兼容。级联HBase水龙头
我的群集正在使用HBase 0.92和Hadoop 2.0.0-cdh4.1.3运行Cloudera CDH4。每当我启动连接到HBase的滚烫的工作,我得到的异常
java.lang.NoSuchMethodError: org.apache.hadoop.net.NetUtils.getInputStream(Ljava/net/Socket;)Ljava/io/InputStream;
at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.setupIOstreams(HBaseClient.java:363)
at org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:1046)
...
看来,由Twitter枫使用HBase的客户期待在NetUtils
一些方法不上部署我的群集的版本的Hadoop的存在。
我该如何追踪究竟是什么不匹配 - HBase客户端期望的版本等等?总体来说,有没有办法来缓解这些问题?
在我看来,经常客户端库编译与Hadoop依赖关系的硬编码版本,很难使那些匹配的实际版本部署。
谢谢,我怀疑这一点。问题是HBase客户端版本在Twitter Maple tap中硬编码。所以基本上我唯一的机会是用Richt依赖项编译自己的Twitter枫树集合?或者有更简单的方法来使它工作? – Andrea 2013-03-29 08:13:53
如果您使用的是Maven,您可以[覆盖依赖关系](http://stackoverflow.com/questions/3937195/maven-how-to-override-the-dependency-added-by-a-library)。在最坏的情况下,只需构建JAR并将类路径指向正确版本的HBase。 – kichik 2013-03-30 01:40:43
面对这个问题与hadoop 0.23.7,但寻找来源 - 在0.23.1找到正确的签名(全文:http://www.yetanothercoder.ru/2013/05/2-days-of-integration-of- OSGi的hadoop.html) – yetanothercoder 2013-05-28 16:05:23