前言:以前有朋友加好友与我探讨一些问题,我以为这些问题倒挺有价值的;因而就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为:《读者来信》。如遇到本人能力有限难以解决的问题,我将转发该文至个人资源圈尽力寻求大佬们出手帮助,并附上提问者微信二维码,但愿给你们提供这样一个互帮互助解决问题的平台。也诚挚地欢迎你们能在留言区积极探讨解决方案,大胆发表本身的见解~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工做笔记】