我的编程空间,编程开发者的网络收藏夹
学习永远不晚

职位画像中phoenix链接HBase异常之版本不匹配

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

职位画像中phoenix链接HBase异常之版本不匹配

职位画像中phoenix链接HBase异常之版本不匹配

Phoenix简介

Phoenix是一个基于HBase的开源SQL引擎,可以使用标准的JDBC API代替HBase客户端API来创建表,插入数据,查询你的HBase数据,它是完全使用Java编写,作为HBase内嵌的JDBC驱动使用。

Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集。

直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。

Phoenix性能如此优秀有下面几方面因素:

  • 编译你的SQL查询转为原生HBase的scan语句
  • 检测scan语句最佳的开始和结束的key
  • 精心编排你的scan语句让他们并行执行
  • 推送你的WHERE子句的谓词到服务端过滤器处理
  • 执行聚合查询通过服务端钩子(称为协同处理器)
  • 实现了二级索引来提升非主键字段查询的性能
  • 统计相关数据来提高并行化水平,并帮助选择最佳优化方案
  • 跳过扫描过滤器来优化IN,LIKE,OR查询
  • 优化主键来均匀分布写压力

接下来就分享下我遇到的问题的表象,以及问题产生的原因,以及解决办法:

按照教程的引导:

  1. 下载安装包,并解压
  2. 拷贝hbase-site.xml、core-site.xml、hdfs-site.xml
  3. 启动HBase集群
  4. 开启链接,报了一堆错误,然后看似是开启了交互模式,然后尝试查表命令,显然还是不能用的

[root@linux123 bin]# ./sqlline.py linux123:2181
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:linux123:2181 none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:linux123:2181
21/08/19 21:17:31 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
21/08/19 21:17:35 WARN ipc.CoprocessorRpcChannel: Call failed on IOException
org.apache.hadoop.hbase.DoNotRetryIOException: org.apache.hadoop.hbase.DoNotRetryIOException: SYSTEM.CATALOG: org.apache.hadoop.hbase.client.Scan.setRaw(Z)V
at org.apache.phoenix.util.ServerUtil.createIOException(ServerUtil.java:120)
... 13 more
Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Scan.setRaw(Z)V
at org.apache.phoenix.coprocessor.MetaDataEndpointImpl.buildDeletedTable(MetaDataEndpointImpl.java:1230)
... 13 more
Error: ERROR 2006 (INT08): Incompatible jars detected between client and server. Ensure that phoenix-[version]-server.jar is put on the classpath of HBase in every region server: org.apache.hadoop.hbase.DoNotRetryIOException: SYSTEM.CATALOG: org.apache.hadoop.hbase.client.Scan.setRaw(Z)V
at org.apache.phoenix.util.ServerUtil.createIOException(ServerUtil.java:120)
... 13 more
sqlline version 1.2.0
0: jdbc:phoenix:linux123:2181>
搜索开头的警告关键字,确实找到了大量的同学分享相关的经验贴,主要分两类:

Unable to load native-hadoop library
DoNotRetryIOException: SYSTEM.CATALOG
经过反复检查和尝试,都没有解决我的问题

原来后面大段的红色报错,才是问题的关键

** Incompatible jars** detected between client and server. Ensure that ** phoenix-[version]-server.jar** is put on the classpath of HBase in ** every** region server
以我浅薄的单词储备:问题的原因应该是jar包版本跟HBase不匹配,猛然想到,自己的集群环境很可能跟教程上的版本号不一致
经检查,确实发现问题的关键:
教程中是用CDH搭建的集群,软件包自然选用phoenix--cdh.jar
而我自己的环境,无论是HDFS,或是ZK以及HBase都是逐个扩展上来的,而版本号,并没有什么偏好
hadoop-2.9.2
hbase-1.3.1
zookeeper-3.4.14

Phoenix官网列出的软件包如下:
file
显然apache-phoenix-4.14.3-HBase-1.3的版本更适合我的环境,果断替换重搞
再次替换jar包、重试链接,果然连接成功,妥了

[root@linux123 bin]#** ./sqlline.py linux123:2181**
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:linux123:2181 none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:linux123:2181
21/08/20 18:15:05 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Connected to: Phoenix (version 4.14)
Driver: PhoenixEmbeddedDriver (version 4.14)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
Building list of tables and columns for tab-completion (set fastconnect to true to skip)...
133/133 (100%) Done
Done
sqlline version 1.2.0
file

The End

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

职位画像中phoenix链接HBase异常之版本不匹配

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

职位画像中phoenix链接HBase异常之版本不匹配

Phoenix简介Phoenix是一个基于HBase的开源SQL引擎,可以使用标准的JDBC API代替HBase客户端API来创建表,插入数据,查询你的HBase数据,它是完全使用Java编写,作为HBase内嵌的JDBC驱动使用。Phoenix查询引擎会将
职位画像中phoenix链接HBase异常之版本不匹配
2018-09-15

编程热搜

目录