前言:以前有朋友加好友與我探討一些問題,我以爲這些問題倒挺有價值的;因而就想在本公衆號開設一個問答專欄,方便技術交流與分享,專欄名就定爲:《讀者來信》。如遇到本人能力有限難以解決的問題,我將轉發該文至個人資源圈盡力尋求大佬們出手幫助,並附上提問者微信二維碼,但願給你們提供這樣一個互幫互助解決問題的平臺。也誠摯地歡迎你們能在留言區積極探討解決方案,大膽發表本身的見解~java
剛搭完HBase集羣,Phoenix一啓動,HBase的Region節點就全崩潰了,是什麼緣由?sql
報錯以下:apache
java.sql.SQLException: ERROR 2006 (INT08): Incompatible jars detected between client and server. Ensure that phoenix.jar is put on the classpath of HBase in every region server: org.apache.hadoop.hbase.exceptions.UnknownProtocolException: No registered coprocessor service found for name MetaDataService in region SYSTEM.CATALOG,,1421861120199.56856673d5cff02b55b9ff5955485dba. at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:5579) at org.apache.hadoop.hbase.regionserver.HRegionServer.execServiceOnRegion(HRegionServer.java:3416) at org.apache.hadoop.hbase.regionserver.HRegionServer.execService(HRegionServer.java:3398) ... more Caused by: org.apache.hadoop.hbase.exceptions.UnknownProtocolException: org.apache.hadoop.hbase.exceptions.UnknownProtocolException: No registered coprocessor service found for name MetaDataService in region SYSTEM.CATALOG,,1421861120199.56856673d5cff02b55b9ff5955485dba. at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:5579) at org.apache.hadoop.hbase.regionserver.HRegionServer.execServiceOnRegion(HRegionServer.java:3416) ... more Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.exceptions.UnknownProtocolException): org.apache.hadoop.hbase.exceptions.UnknownProtocolException: No registered coprocessor service found for name MetaDataService in region SYSTEM.CATALOG,,1421861120199.56856673d5cff02b55b9ff5955485dba. at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:5579) at org.apache.hadoop.hbase.regionserver.HRegionServer.execServiceOnRegion(HRegionServer.java:3416) ... 14 more
咱們首先分析一點:Phoenix啓動HBase就掛,而Phoenix基於HBase協處理器作了不少工做,很明顯HBase單獨啓動沒問題,走到協處理器這一步就報錯,必定不是HBase端的問題,也必定是沒有設定下面的參數爲False。微信
# hbase-site.xml <property> <name>hbase.coprocessor.abortonerror</name> <value>false</value> </property>
通常咱們應用HBase協處理器技術,首先要將其設爲False。這個是什麼意思呢?意思就是當加載於HBase之上的協處理器異常時要不要abort Hbase。那確定是不要,總不能加載了一個協處理器將整個集羣搞掛了,畢竟手寫協處理器代碼不免有bug。網絡
咱們設置該參數後,重啓HBase再啓動Phoenix,這回HBase沒事了,可是Phoenix依然報上面的錯誤,爲何呢?請看下文的小猿解答。oop
其實看到這個異常的第一眼,總感受是Phoenix與HBase不兼容,網上的答案也大都是不兼容,又特意看了一下HBase版本,確實沒有問題。致使這個問題的因素可能有不少,好比版本不兼容就是一個,這裏就不兜圈子了,直接曝光下這回遇到的這個問題的致使因素是什麼。ui
最終找到的緣由是:將Phoenix壓縮包下幾乎全部的jar包都拷貝到了HBase/lib目錄下,形成了包衝突。而官網只是要求將Phoenix-version-server.jar拷貝到HBase/lib目錄下。this
To install a pre-built phoenix, use these directions:spa
很簡單的4步操做,相比老版本真的簡單了許多。因此這裏仍是建議你們仍是以官網的教程爲主,網絡教程爲輔,除了能少入坑,也能學到真東西,有助於融會貫通。這也是本文着重想申明的一點,千萬不要照葫蘆畫瓢,畢竟一個相同的問題可能會有多個不一樣的誘因~3d
轉載請註明出處!歡迎關注本人微信公衆號【HBase工做筆記】