我想寫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