2016-07-30 108 views
1

我正在運行以下Storm安裝程序(在Ubuntu 16.4 64位上)。Apache Storm Hbase版本兼容性,java.lang.NoSuchFieldError:HBASE_CLIENT_LIMIT

  • 風暴:0.10.1
  • 的Hadoop:2.5.2(本地僞簇)
  • HBASE:1.1.5(本地僞簇)
  • 編譯器進行罐:行家
  • 使用通過導入函數默認的hbase風暴支持類:org.apache.storm.hbase.bolt.HbaseBolt和mapper.SimpleHBaseMapper。

我試圖寫一個「Hbase」螺栓朝向Hbase DB。在這個過程中,我得到了以下錯誤:

016-07-30 21:06:14.874 b.s.util [ERROR] Async loop died! 
java.lang.NoSuchFieldError: HBASE_CLIENT_PREFETCH_LIMIT 
    at org.apache.hadoop.hbase.client.HConnectionKey.<clinit>(HConnectionKey.java:42) ~[stormjar.jar:?] 
    at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:271) ~[stormjar.j 
ar:?] 
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:197) ~[stormjar.jar:?] 
    at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:159) ~[stormjar.jar:?] 
    at org.apache.storm.hbase.common.HBaseClient$1.run(HBaseClient.java:45) ~[storm-hbase-0.10.1.jar:0.10.1] 
    at org.apache.storm.hbase.common.HBaseClient$1.run(HBaseClient.java:42) ~[storm-hbase-0.10.1.jar:0.10.1] 
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_91] 

這看起來像一個類似的問題:http://lucene.472066.n3.nabble.com/CIS-CMMI-3-HBASE-CLIENT-PREFETCH-LIMIT-td4254588.html哪些結果中的兼容性問題。

在提供風暴HBase的罐子,我可以看到做參考: HBase的0.98.4-hadoop2和HDFS版本2.2.0,但在我的支持HBase的源https://github.com/apache/storm/tree/master/external/storm-hbase是HBase的版本1.1的POM文件看到。 0被支持。

如果我將Hbase版本切換回0.98.4-hadoop或更高版本,直到版本hbase-0.98.20-hadoop2或使用1.1.0?從1.1.5回到1.1.0似乎很奇怪,我已經降級了兩者。或者我應該使用apache.hadoop.hbase類?我保存了很多使用這些類的代碼。

反正,請指教。過去5天我一直在進行故障排除,沒有任何過程。

親切的問候, 馬克

+0

有人有什麼建議嗎? –

回答

0

此問題是由您的POM從服務器端的jar版本不同版本的HBase客戶端造成的。如果您使用的是特定於供應商的版本(例如1.2.0-cdh5.7.0),那麼也需要保持一致。