Phoenix客户端进化之由重到轻

简介: Phoenix重客户端 Phoenix是HBase之上的SQL层,它为HBase赋予了NEWSQL的特性,支持了大多数的标准SQL特性,并提供了JDBC的访问接口,使得我们在应用程序中能够方便的集成使用。

Phoenix重客户端

Phoenix是HBase之上的SQL层,它为HBase赋予了NEWSQL的特性,支持了大多数的标准SQL特性,并提供了JDBC的访问接口,使得我们在应用程序中能够方便的集成使用。其架构如图:

image

从其架构来看,Phoenix结构上划分为客户端和服务端两部分:

  • 客户端包括应用程序开发,将SQL进行解析优化生成QueryPlan,进而转化为HBase Scans,调用HBase API下发查询计算请求,并接收返回结果;
  • 服务端主要是利用HBase的协处理器,处理二级索引、聚合及JOIN计算等。

这种架构我们称之为重客户端架构,也是目前Phoenix使用最广泛的方式,但是这种方式存在一些使用上的缺陷:

  1. 应用程序与Phoenix core绑定使用,需要引入Phoenix内核依赖,目前一个单独Phoenix重客户端集成包已达120多M;
  2. 运维不便,Phoenix仍在不断优化和发展,一旦Phoenix版本更新,那么应用程序也需要对应升级版本并重新发布;
  3. 仅支持Java API,其他语言开发者不能使用Phoenix。

Phoenix轻客户端

针对重客户端使用问题,Phoenix社区引入了轻客户端架构,如图所示:

image

轻客户端架构将Phoenix分为三部分:

  • 瘦客户端是用户最小依赖的JDBC驱动程序,与Phoenix依赖进行解耦,支持Java、Python、Go等多种语言客户端;
  • QueryServer是一个单独部署的HTTP服务,接收轻客户端的RPC请求,并将SQL转发给Phoenix Core进行解析优化执行;
  • Phoenix Server与重客户端架构相同。

轻客户端JDBC连接串格式为:

jdbc:phoenix:thin:url=http://<server-hostname>:<port>[;option=value...]

其中

server-hostname:为QueryServer的主机名或IP
port:为QueryServer的端口号,默认为8765

Phoenix还提供了轻客户端命令行工具sqlline-thin.py,可以方便的进行测试使用。

QueryServer介绍

QueryServer基于Calcite的Avatica组件实现,内部嵌入了独立的Jetty HttpServer,支持Protobuf和JSON两种RPC传输协议,其中Protobuf是默认协议,提供比JSON更高效的通信方式。

由于QueryServer是无状态的,可以部署在HBase集群的每台RegionServer上,通过HTTP负载均衡器将多个客户端的请求分发在多个QueryServer上。

image

总结与展望

Phoenix轻客户端使业务端应用程序更加轻薄,业务开发人员无需再花费精力在底层Phoenix升级及运维,更加专注于业务本身,同时提供给非Java开发人员使用Phoenix的一种途径。

相比较重客户端,轻客户端实现增加了RPC请求链路,在性能上略有降低,阿里云HBase团队后续会进一步优化轻客户端读写性能。


阿里云HBase2.x版本已经支持Phoenix5.x的轻客户端模式,详细使用请参考:
产品入口:
  链接:https://cn.aliyun.com/product/hbase

云HBase SQL服务使用文档
  链接:https://help.aliyun.com/document_detail/104059.html?spm=a2c4g.11174283.6.606.11fc3c2ewByoQn

参考文献

https://phoenix.apache.org/server.html

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
7月前
|
存储 固态存储 关系型数据库
下一代实时数据库:Apache Doris 【三】集群部署
下一代实时数据库:Apache Doris 【三】集群部署
199 0
|
1月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
7月前
|
SQL 机器学习/深度学习 分布式计算
硬核!Apache Hudi Schema演变深度分析与应用
硬核!Apache Hudi Schema演变深度分析与应用
248 3
|
7月前
|
存储 固态存储 OLAP
下一代实时数据库:Apache Doris 【六】数据划分
下一代实时数据库:Apache Doris 【六】数据划分
121 1
|
7月前
|
数据挖掘 关系型数据库 MySQL
下一代实时数据库:Apache Doris 【一】简介
下一代实时数据库:Apache Doris 【一】简介
181 0
下一代实时数据库:Apache Doris 【一】简介
|
7月前
|
Java Apache 数据库
下一代实时数据库:Apache Doris 【二】编译与安装
下一代实时数据库:Apache Doris 【二】编译与安装
500 0
|
大数据 分布式数据库 Hbase
|
大数据 Linux 网络安全
|
SQL 分布式计算 Hadoop
【Hadoop技术篇】hive的优化,经典面试
1) 开启配置:set hive.optimize.bucketmapjoin = true; 2) 一个表的bucket数是另一个表bucket数的==整数倍== 3) bucket列 == join列 4) 满足map join条件
341 0
【Hadoop技术篇】hive的优化,经典面试
|
SQL 存储 缓存
腾讯基于 Flink SQL 的功能扩展与深度优化实践
本文由腾讯高级工程师杜立分享,主要介绍腾讯实时计算平台针对 Flink SQL 所做的优化。
腾讯基于 Flink SQL 的功能扩展与深度优化实践