讀者來信 | 剛搭完HBase集羣,Phoenix一啓動,HBase就全崩了,是什麼緣由?(已解決)

前言:以前有朋友加好友與我探討一些問題,我以爲這些問題倒挺有價值的;因而就想在本公衆號開設一個問答專欄,方便技術交流與分享,專欄名就定爲:《讀者來信》。如遇到本人能力有限難以解決的問題,我將轉發該文至個人資源圈盡力尋求大佬們出手幫助,並附上提問者微信二維碼,但願給你們提供這樣一個互幫互助解決問題的平臺。也誠摯地歡迎你們能在留言區積極探討解決方案,大膽發表本身的見解~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

  • Download and expand the latest phoenix-[version]-bin.tar.
  • Add the phoenix-[version]-server.jar to the classpath of all HBase region server and master and remove any previous version. An easy way to do this is to copy it into the HBase lib directory (use phoenix-core-[version].jar for Phoenix 3.x)
  • Restart HBase.
  • Add the phoenix-[version]-client.jar to the classpath of any Phoenix client.

很簡單的4步操做,相比老版本真的簡單了許多。因此這裏仍是建議你們仍是以官網的教程爲主,網絡教程爲輔,除了能少入坑,也能學到真東西,有助於融會貫通。這也是本文着重想申明的一點,千萬不要照葫蘆畫瓢,畢竟一個相同的問題可能會有多個不一樣的誘因~3d

掃描二維碼關注博主公衆號

轉載請註明出處!歡迎關注本人微信公衆號【HBase工做筆記】

相關文章
相關標籤/搜索