关于Phoenix的一些学习引导

1.什么是Phoenix?

    首先你得了解Hbase的基本概念、使用过Hbase并对Hbase现有的Api操作方式感到困惑和些许不满,那么继续看下去才更有意义。Phoenix 是Hbase上的高层组件,是一个独立的开源项目,基于Hbase的扫描操作和协处理器实现了一套底层基于Hbase表结构的标准SQL层,简化了Hbase的使用方式,为熟悉SQL的开发人员降低了学习门槛,为基于Hbase的开发人员降低了开发难度.

2.Phoenix 和Hbase在协议上的关系

    Phoenix有标准的SQL概念模型,表、索引、视图等等,所有的实现都依赖与Hbase的概念模型,Phoenix的表和Hbase的表之间存在一些隐含的绑定关系,没有Hbase概念模型的支持Phoenix就无法工作.

  • Phoenix 表一般依赖与一个Hbase的表存在
  • Phoenix 的视图也是直接或者间接依赖于Hbase的表
  • Phoenix 的索引是基于Hbase的表来存储的,索引的建立和删除依赖于Hbase的协处理器

3.Phoenix 带来的便捷性

  • 允许在Hbase总以标准SQL的方式操作数据和执行计算
  • 性能保证,大部分情况下提供优于使用Hbase Api的查询、计算性能
  • 扩展Hbase 原生的操作,支持以SQL的方式创建二级索引、查询分页等、透明的加盐(Salted:避免热点写入)操作等
  • 提供瘦客户端的方式访问Hbase数据,与标准JDBC连接相同的操作方式,使用Phoenix-Server组件作为Server端代理客户端的请求
  • 实现标准SQL又基于Hbase的数据扫描特性实现了若干的扩展如:分段扫描、跳跃扫描
  • Phoenix 提供了事物表特性,支持跨行和跨表的事物操作,损失性能是必然的
  • SQL中支持用户自定义函数

4.Phoenix 的性能保证

  • 表上透明的Salted操作,预先拆分等方式加速表数据的写入操作
  • 定义二级索引(全局索引、本地索引),联合主键加速表的读取操作
  • Phoenix 表到Hbase表的字段映射降低Hbase底层的存储大小[本质上减小了Cell中列族和列名的字段大小]
  • 底层Hbase表的扫描操作并行化,基于统计信息进行优化
  • 对SQL中的条件,进行特殊优化使用跳跃式的扫描方式来并发的分段扫描数据
  • 提供对大量倒入数据的支持,索引可延迟执行,提供psql数据导入工具和基于MR的大规模数据导入工具
  • Phoenix没有限制Hbase的水平扩展特性,对于Hbase的优化Phoenix几乎都可以受益

5.对现有技术的支持

  • Spark支持,RDD的方式加载和写入表数据
  • Hive支持
  • Flume\Kafka支持

6.Hbase + Phoenix 使用场景

  • 适用于有海量数据实时存储[通过Phoenix SQL,Spark等],实时数据查询和分析[Phoenix SQL,Spark等]. 
  • 从关系型数据库的开发人员计划使用大数据技术来优化存储时是一个不错的选择

猜你喜欢

转载自blog.csdn.net/u010820702/article/details/80371359