CSDN话题挑战赛第2期
参赛话题:大数据学习成长记录
目录
一、Phoneix简介
Phoneix是什么
Apache Phoenix是Apache HBase的附加组件,提供了程序化的ANSI SQL接口。Apache Phoenix实施了最佳实践优化,以使软件工程师能够开发基于HBase的下一代数据驱动的应用程序。使用Phoenix,你可以使用标准JDBC API以典型DDL / DML语句的形式创建表并与表进行交互。从而可以避免使用 HBase 的客户端 API。而在我们的应用和 HBase 之间添加了 Phoenix, 并不会降低性能, 我们却少写了很多代码。
说白了Phoenix就是hbase的可视化;就好比Navicat基于MySQL;hive基于Hadoop。我们Phoenix基于hbase也是一个道理。
Phoneix如何运作
Phoenix提供了对大量数据的快速访问,执行毫秒级的读取,写入和更新,以及快速表扫描;例如,您可以在20秒内扫描1亿行(中型群集上的窄表)。如果查询在键列上包含过滤器,则此查询时间可以减少到几毫秒。对于那些不是键列上的过滤器,您可以在这些列上添加二级索引,通过将索引列作为键的一部分来对键列进行筛选。
为什么即使进行全面扫描,Phoenix也能快速运行?
- phoenix使用guidePosts将查询分块,这意味着在一个区域上有更多的线程。
- Phoenix使用可配置数量的线程在客户端上并行运行查询。
- 聚合是在服务器端的协处理器中完成的,从而减少了返回给客户端的数据量。
Phoneix的优点
- 将 SQl 查询编译为 HBase 扫描
- 确定扫描 Rowkey 的最佳开始和结束位置
- 扫描并行执行
- 将 where 子句推送到服务器端的过滤器
- 通过协处理器进行聚合操作
- 完美支持 HBase 二级索引创建
- DML命令以及通过DDL命令创建和操作表和版本化增量更改。
- 容易集成:如Spark,Hive,Pig,Flume和Map Reduce。
Phoneix架构
Phoenix 数据存储
- Phoenix将 HBase 的数据模型映射到关系型世界
HBase | phoenix |
namespace | database |
table | table |
column family+column quliafier | cf:cq |
rowkey | 主键 |
二、Phoneix搭建
准备工作
搭建phoenix之前确保hbase能够正常启动;
可参考我之前的博客搭建hbase:HBase详解
phoenix下载地址: http://phoenix.apache.org/download.html
上传安装包到node001节点:
正式搭建
节点规划
节点\服务 | HMaster | HRegionServer | Zookeeper |