读者来信 | 刚搭完HBase集群,Phoenix一启动,HBase就全崩了,是什么原因?(已解决)

前言:之前有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的;于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为:《读者来信》。如遇到本人能力有限难以解决的问题,我将转发该文至我的资源圈尽力寻求大佬们出手帮助,并附上提问者微信二维码,希望给大家提供这样一个互帮互助解决问题的平台。也诚挚地欢迎大家能在留言区积极探讨解决方案,大胆发表自己的看法~

来信人:于*超

小猿提问

刚搭完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:

  • 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步操作,相比老版本真的简单了许多。所以这里还是建议大家还是以官网的教程为主,网络教程为辅,除了能少入坑,也能学到真东西,有助于融会贯通。这也是本文着重想申明的一点,千万不要照葫芦画瓢,毕竟一个相同的问题可能会有多个不同的诱因~

转载请注明出处!欢迎关注本人微信公众号【HBase工作笔记】

原文地址:https://www.cnblogs.com/zpb2016/p/12641129.html

时间: 2024-10-11 13:24:54

读者来信 | 刚搭完HBase集群,Phoenix一启动,HBase就全崩了,是什么原因?(已解决)的相关文章

安转hbase集群----安装Zookeeper和Hbase

1.zookeeper安装 把解压文件从桌面移到安装目录software 解压 显示文件 修改zoo.cfg文件 我的丛机就是主机 注意:如果有多台丛机应该这样配 创建datadir指定目录和创建myid文件 我是在一台机子上配的,主机就是丛机,如果要配置多台丛机,则使用以下命令 发送zookeeper给从节点 修改从节点myid中的值 启动每个节点的zookeeper服务 检查zookeeper是否安装成功 我的是一台机子,所以显示standalone 如果丛机不是本机,则显示follower

大数据 时间同步问题 解决hbase集群节点HRegionServer启动后自动关闭

1)在hbase-site.xml文件中 修改增加 ,将时间改大点<property><name>hbase.master.maxclockskew</name><value>150000</value></property>2)修改系统时间,将时间改为一致(建议采用本方法):修改日期date -s 08/20/2016修改时间date -s 15:14:00检查硬件(CMOS)时间clock -r将系统时间写入CMOSclock -

Hbase集群搭建三(Hbase搭建)

服务器准备:下述内容绑定 /etc/hosts 10.110.110.10 master 10.110.110.11 slave1 10.110.110.12 slave2 写累了...慢慢补充

Phoenix连接安全模式下的HBase集群

Phoenix连接安全模式下的HBase集群 HBase集群开启安全模式(即启用kerberos认证)之后,用户无论是用HBase shell还是Phoenix去连接HBase都先需要通过kerberos认证.如果没有通过kerberos认证,则hbase shell或phoenix都会报找不到kerberos tgt的错误而无法访问HBase(以下以phoenix为例): 对于HBase shell来说,用户可以在命令行先用kinit命令(kinit -kt <user keytab> &l

Hbase集群搭建

JDK版本和HBASE对应关系 HBase Version JDK 6 JDK 7 JDK 8 2 Not Supported Not Supported yes 1.3 Not Supported yes yes 1.2 Not Supported yes yes 1.1 Not Supported yes Running with JDK 8 will work but is not well tested. 1 Not Supported yes Running with JDK 8 wi

Zookeeper集群安装(HBase集群已安装好)

HBase集群已安装好,在使用了其内置的zookeeper集群出现问题无法解决后改用自己安装的zookeeper集群,HBase集群可成功启动. 1.在/home/instal目录下,解压zookeeper-3.4.6到该目录下 tar  -zxvf  zookeeper-3.4.6.tar.gz  -C /home/instal 2.复制zookeeper-3.4.6/conf下的zoo_sample.cfg,并且重命名为zoo.cfg cp  zoo_sample.cfg  zoo.cfg

HBase集群数据迁移方案

一.静态迁移方案 1.在hbase停止的状态下进行数据的迁移. 2.采用Hadoop distcp方式,将以上目录的内容,迁移到另一个集群. 使用add_table.rb进行恢复. 缺点:不太灵活 二.动态迁移方案 -Replication备份方案 -CopyTable方案 -Export and Import方案 1.Replication备份方案 修改hbase-site.xml配置,增加hbase.replication属性, 增加表属性REPLICATION_SCOPE属性. add_p

hbase集群部署与测试(2017)

部署hbase的集群首先我们要需要一个hadoop集群.至少要有一个hdfs的集群和zookeeper集群用HA集群的可用性号,由于做实验,没必要这么多集群,那么就不用HA集群第一步看一下hdfs是否正常启动hdfsstart-dfs.sh启动zookeeper看是否正常(每台机器上都手动启动zookeeper)./zkServer.sh start检查zookeeper的工作状态./zkServer.sh status我们可以输入hdfs dfsadmin -report 来查看集群的工作信息

Hbase集群client执行报错:Unable to find region for TABLE,,99999999999999 after 10 tries.

Windows7 eclipse下运行Hbase集群客户端,报 Unable to find region for wlan_log,,99999999999999 after 10 tries. Unable to find region for wlan_log,,99999999999999 after 10 tries. 其中wlan_log是我的Hbase表. 仔细检查了我的Hbase和Hadoop集群都没有问题,经过度娘的提示,我终于明白了, 因为我的host文件只配置了region