分享

Phoenix介绍:实现向HBase发送标准SQL语句

本帖最后由 yuwenge 于 2014-6-17 18:43 编辑
问题导读
1.什么是Phoenix
2.Phoenix的运行原理是什么?
3.Phoenix如何安装配置?
4.如何使用Phoenix
5.Phoenix有哪些特性?






写在前面一:

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


写在前面二:
环境说明:
2.jpg


一、什么是Phoenix
摘自官网:
3.jpg

Phoenix是一个提供hbase的sql操作的框架,Phoenix是构建在HBase之上的一个SQL中间层。Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的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、通过客户端的批处理实现的有限的事务支持
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集群

若通过客户端访问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.jpg

4.2、通过Java

  1. Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");   
  2. // connection string: jdbc:phoenix [ :<zookeeper quorum> [ :<port number> ] [ :<root node> ] ]  
  3. Connection connection = DriverManager.getConnection("jdbc:phoenix:slave3:2181");
复制代码
20140531225518828.jpg




4.3、通过SQL客户端SQuirrel访问

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

再进行安装配置即可。

五、使用Phoenix


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

其中,WEB_STAT.sql的内容如下:
6.jpg

执行以上命令后,查看phoenix中的表:
7.jpg

8.jpg

Phoenix支持模糊查询:
9.jpg

查看HBase中的表,如下:
10.jpg

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




http://blog.csdn.net/aaronhadoop/article/details/27865841

已有(3)人评论

跳转到指定楼层
laneypeng 发表于 2015-8-16 22:26:35
回复

使用道具 举报

HawCHing 发表于 2016-1-7 14:24:14
phoenix连接能看到日志吗,我拷了phoenix-server*.jar到 hbase的目录,但是启动的时候就卡在那里不动了。

[root@nameNode01 bin]# ./sqlline.py dataNode01:2181
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:dataNode01:2181 none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:dataNode01:2181
16/01/07 14:19:40 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条