Phoenix——实现向HBase发送标准SQL语句

写在前面一:

本文总结基于HBase的SQL查询系统——Salesforce phoenix


写在前面二:

环境说明:


一、什么是Phoenix

摘自官网:


Phoenix是一个提供hbase的sql操作的框架,Phoenix是构建在HBase之上的一个SQL中间层。

Phoenix全然使用Java编写,代码位于GitHub上,而且提供了一个client可嵌入的JDBC驱动。对于简单的低延迟查询,其性能量级为毫秒。对于百万级别的行数来说,其性能量级为秒。Phoenix并非像HBase那样
用于map-reduce job的,而是通过标准化的语言来訪问HBase数据的。

Phoenix最值得关注的特性:
1、嵌入式的JDBC驱动,实现了大部分的java.sql接口。包含元数据API
2、能够通过多部行键或是键/值单元对列进行建模
3、完好的查询支持,能够使用多个谓词以及优化的扫描键
4、DDL支持:通过CREATE TABLE、DROP TABLE及ALTER TABLE来加入/删除列
5、版本号化的模式仓库:当写入数据时,快照查询会使用恰当的模式
6、DML支持:用于逐行插入的UPSERT VALUES、用于同样或不同表之间大量传输数据的UPSERT SELECT、用于删除行的DELETE
7、通过client的批处理实现的有限的事务支持
8、单表——还没有连接,同一时候二级索引也在开发其中
9、紧跟ANSI SQL标准

二、Phoenix原理

Phoenix基本原理是将一个对于HBase client来说比較复杂的查询转换成一系列Region Scan,结合coprocessor和custom  filter在多台Region Server上进行并行查询。汇总各个Scan结果。

种种迹象表明。Phoenix应该不是个优化的OLAP系统,更像是一个用于简单单表查询,过滤。排序,检索的OLTP系统。 Phoenix 能够为我们眼下大数据平台提供比較便捷的数据操作能力(直接用jdbc方式),性能比較不错。注意不要使用多表查询就可以 。


三、Phoenix安装配置

1、下载
phoenix-3.0.0-incubating.tar.gz
http://phoenix.incubator.apache.org/download.html#Installation
2、拷贝phoenix-3.0.0-incubating/common/phoenix-core-3.0.0-incubating.jar至$HBASE_HOME/lib/下
3、重新启动HBase集群

若通过client訪问phoenix,需进行下面操作:
把phoenix-3.0.0-incubating/hadoop-1/phoenix-3.0.0-incubating-client.jar加入到Phoenix客户端的类路径下

四、訪问Phoenix

4.1、通过命令行

进入phoenix

cd /home/yujianxin/hbase/phoenix/phoenix-3.0.0-incubating/bin
./sqlline.py slave3:2181

出现下面响应,说明成功安装


4.2、通过Java

<span style="font-family:Times New Roman;">Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); 
// connection string: jdbc:phoenix [ :<zookeeper quorum> [ :<port number> ] [ :<root node> ] ]
Connection connection = DriverManager.getConnection("jdbc:phoenix:slave3:2181");</span>

4.3、通过SQLclientSQuirrel訪问

下载地址:http://squirrel-sql.sourceforge.net/

再进行安装配置就可以。


五、使用Phoenix

使用phoenix-3.0.0-incubating.tar.gz自带的数据进行測试


当中。WEB_STAT.sql的内容例如以下:


运行以上命令后,查看phoenix中的表:



Phoenix支持模糊查询:


查看HBase中的表,例如以下:


就可以通过Phoenix这个构建在HBase之上的SQL中间层,向HBase发送标准sql语句。对HBase进行操作。


posted @ 2016-02-05 18:16  zfyouxi  阅读(773)  评论(0编辑  收藏  举报