您当前的位置: 首页 > 

cuiyaonan2000

暂无认证

  • 0浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Phoenix简介

cuiyaonan2000 发布时间:2021-04-16 13:54:16 ,浏览量:0

序言

前文说到Hbase没有类似ORM这类的东西,操作查询全靠java逻辑,很不方便。所以横空出世了Phoenix。

Phoenix与HBase中的表是独立的,两者之间没有必然的关系。

如果要通过Phoenix操作Hbase中的表,则需要在Phoenix的系统表中加入Hbase的相关信息。实际上Phoenix也是通过这种形式来查询Hbase中的表的,这样子看来Phoenix有点像数据表中的Hmaster,cuiyaonan2000@163.com

Phoenix创建表时会自动调用HBase客户端创建相应的表(使用hbase client api),创建八张系统表(这些表也是创建在HBase中的表,只是所属对象是Phoenix):

  1. SYSTEM.CATALOG(其中SYSTEM.CATALOG表用于存放Phoenix创建表时的元数据,即用于存储记录Hbase中的表,如此才能操作关联Hbase)
  2. SYSTEM.FUNCTION
  3. SYSTEM.LOG
  4. SYSTEM.SEQUENCE
  5. SYSTEM.STATS
  6. SYSTEM.CHILD_LINK
  7. SYSTEM.TASK

并且在SYSTEM.CATALOG系统表中记录Phoenix创建表时的元数据:

  1. 其主键的值对应HBase的RowKey
  2. 非主键的列对应HBase的Column
  3. 列族不指定时为0,且列会进行编码
  4. 如果是通过Phoenix创建的表,那么必须通过Phoenix客户端来对表进行操作,因为通过Phoenix创建的表其非主键的列会进行编码---------------这样我们的代码中就需要维护2个客户端,A:phoenix客户端 B:Hbase客户端
  • 官网网址:http://phoenix.apache.org/
  • 阿里的官方网址:https://help.aliyun.com/document_detail/69105.html?spm=a2c4g.11186623.6.714.4ab149f3b09Zou

简介

Phoenix是一个开源的HBASE SQL层(即Phoenix是应用层和Hbase的中间件cuiyaonan2000@163.com)。

它不仅可以使用标准的JDBC API替代HBASE client API创建表,插入和查询HBASE,也支持二级索引、事务以及多种SQL层优化。

Phoenix使用JAVA语言进行编写,其查询引擎会将SQL查询语句转换成一个或多个HBase Scanner,且并行执行生成标准的JDBC结果集。

  1. Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。
  2. Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集。
  3. 直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。

HBase的查询工具有很多,如:Hive、Tez、Impala、Spark SQL、Phoenix等。

Phoenix通过以下方式使我们可以少写代码,并且性能比我们自己写代码更好:

  • 将SQL编译成原生的HBase scans。
  • 确定scan关键字的最佳开始和结束
  • 让scan并行执行
  • ...

部署(因为是内嵌所以比较简单)

由于Phoenix是内嵌在HBase的JDBC驱动,且HBase是通过JAVA语言编写的,其基于HDFS,且依赖于Zookeeper进行服务的协调和HA高可用配置,因此~~~~~~~~~~~~~~~~~~~~~.

根据hbase选择指定的版本

#下载
[root@cuiyaonan2000 phoenix] wget https://mirrors.tuna.tsinghua.edu.cn/apache/phoenix/phoenix-5.1.1/phoenix-hbase-2.3-5.1.1-bin.tar.gz

#解压
#将解压后的phoenix-server-hbase-2.3-5.1.1.jar 放置到各个节点的hbase的lib文件夹下
[root@cuiyaonan2000 phoenix] tar -zxvf phoenix-hbase-2.3-5.1.1-bin.tar.gz 

  1. 将解压后的phoenix-server-hbase-2.3-5.1.1.jar 放置到各个节点的hbase的lib文件夹下
  2. 重启hbase(当HBase集群启动时将会加载Phoenix,并加载hbase-site.xml配置文件(存放HBase和Phoenix的配置),此时可以使用Phoenix客户端进行连接,通过标准的JDBC来操作HBase)
  3. Phoenix第一次启动时,会在HBase中创建八张系统表,用于存放Phoenix的相关信息。
验证(phoenix的命令是: ! + 英文 的模式)

部署完成后再phoenix的bin目录下执行命令:

#登录phoenix
[root@cuiyaonan2000 phoenix] ./sqlline.py  zookeeper的ip不包含端口




# 执行脚本命令示例
[root@cuiyaonan2000 phoenix] sqlline.py localhost ../examples/stock_symbol.sql



#退出phoenix客户端命令
!quit

显示如下内容:

输入!tables 可以看到phoenix已经在hbase中创建了8张表,用于管理自身的数据和管理hbase的表--其中catalog是重点表

同时查看hbase的管理界面,可以看到如上的表其实是建立在了hbase上

关注
打赏
1638267374
查看更多评论
立即登录/注册

微信扫码登录

0.0393s