Phoenix——向HBase发送标准SQL成为现实

标签: phoenix hbase 标准 | 发表时间:2014-06-01 07:09 | 作者:wl101yjx
出处:http://blog.csdn.net

写在前面一:

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


写在前面二:

环境说明:


一、什么是Phoenix

摘自官网:


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

3.1、通过命令行

进入phoenix

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

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


3.2、通过Java

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");


五、使用 Phoenix

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


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


查看HBase中的表,如下:


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


作者:wl101yjx 发表于2014-5-31 23:09:54 原文链接
阅读:88 评论:0 查看评论

相关 [phoenix hbase 标准] 推荐:

Phoenix——向HBase发送标准SQL成为现实

- - CSDN博客云计算推荐文章
本文总结基于HBase的SQL查询系统——Salesforce phoenix. Phoenix是一个提供hbase的sql操作的框架,Phoenix是构建在HBase之上的一个SQL中间层. Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动. 对于简单的低延迟查询,其性能量级为毫秒;对于百万级别的行数来说,其性能量级为秒.

Phoenix(sql on hbase)简介

- - CSDN博客云计算推荐文章
Phoenix(sql on hbase)简介. Phoenix takes your SQL query, compiles it into a series of HBase scans, and orchestrates the running of those scans to produce regular JDBC result sets.

快速理解 Phoenix : SQL on HBASE

- - CSDN博客推荐文章
作者:刘旭晖 Raymond 转载请注明出处. 更多云计算相关项目快速理解文档  http://blog.csdn.net/colorant/article/details/8255910. 不同于Hive on HBase的方式,Phoenix将Query Plan直接使用HBaseAPI实现,目的是规避MapReduce框架,减少查询的时间延迟.

Phoenix:在Apache HBase上执行SQL查询

- - CSDN博客推荐文章
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2013/02/Phoenix-HBase-SQL. 近日,Salesforce.com开源了 Phoenix,这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.

使用Apache Phoenix 实现 SQL 操作HBase

- - ITeye博客
Apache Phoenix 相信大家并不陌生,它是HBase的SQL驱动,Phoenix 使得Hbase 支持通过JDBC的方式进行访问,并将你的SQL查询转换成Hbase的扫描和相应的动作. Hbase和Phoenix的安装这里就不做过多阐述,都很简单,这里给大家简单介绍一下安装完成后如何通过SQL Client来连接到Phoenix:.

[Binospace] 深入分析HBase-Phoenix执行机制与原理

- - SQL - 编程语言 - ITeye博客
针对HBase上SQL解决方案,目前社区内比较热门的有Cloudera的Impala,Horntworks的Drill,以及Hive. 根据与HBase的操作方式,可以分为三种:. 以MapReduce为核心,单个任务使用hbase-client原始接口访问;. 以Google Dremel为核心,单个任务使用hbase-client原始接口访问;.

使用Phoenix通过sql语句更新操作hbase数据 - xirong

- - 博客园_首页
hbase 提供很方便的shell脚本,可以对数据表进行 CURD 操作,但是毕竟是有一定的学习成本的,基本上对于开发来讲,sql 语句都是看家本领,那么,有没有一种方法可以把 sql 语句转换成 hbase的原生API呢. 这样就可以通过普通平常的 sql 来对hbase 进行数据的管理,使用成本大大降低.

hbase介绍

- AreYouOK? - 淘宝数据平台与产品部官方博客 tbdata.org
hbase是bigtable的开源山寨版本. 是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统. 它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作). 主要用来存储非结构化和半结构化的松散数据.

Riak对比HBase

- - NoSQLFan
文章来自 Riak官方wiki,是一篇Riak与HBase的对比文章. Riak官方的对比通常都做得很中肯,并不刻意偏向自家产品. 对比的Riak版本是1.1.x,HBase是0.94.x. Riak 与 HBase 都是基于 Apache 2.0 licensed 发布. Riak 的实现是基于 Amazon 的 Dynamo 论文,HBase 是基于 Google 的 BigTable.