问题引用:
刚搭完hbase集群,phoenix一启动,hbase的region节点就全崩溃了,是什么原因?
报错如下:
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依然报上面的错误,为什么呢?请看下文的小猿解答。
其实看到这个异常的第一眼,总感觉是phoenix与hbase不兼容,网上的答案也大都是不兼容,又特地看了一下hbase版本,确实没有问题。导致这个问题的因素可能有很多,比如版本不兼容就是一个,这里就不兜圈子了,直接曝光下这回遇到的这个问题的导致因素是什么。
最终找到的原因是:将phoenix压缩包下几乎所有的jar包都拷贝到了hbase/lib目录下,造成了包冲突。而官网只是要求将phoenix-version-server.jar拷贝到hbase/lib目录下。
to install a pre-built phoenix, use these directions:
很简单的4步操作,相比老版本真的简单了许多。所以这里还是建议大家还是以官网的教程为主,网络教程为辅,除了能少入坑,也能学到真东西,有助于融会贯通。这也是本文着重想申明的一点,千万不要照葫芦画瓢,毕竟一个相同的问题可能会有多个不同的诱因~
原文来自:https://www.cnblogs.com/zpb2016/p/12641129.html
转载请注明出处!欢迎关注本人微信公众号【hbase工作笔记】
如对本文有疑问, 点击进行留言回复!!
HBase Filter 过滤器之FamilyFilter详解
去 HBase,Kylin on Parquet 性能表现如何?
如何找到Hive提交的SQL相对应的Yarn程序的applicationId
网友评论