HBase查询引擎—Phoenix

1. 简介

Apache Phoenix,是由saleforce.com开源的一个项目,后又捐给了Apache基金会。它相当于一个Java中间件,提供jdbc连接,操作hbase数据表,Phoenix 使得Hbase 支持通过JDBC的方式进行访问,并将你的SQL查询转换成Hbase的扫描和相应的动作。

地址:http://phoenix.apache.org/

兼容性:

  • Phoenix 2.x - HBase 0.94.x
  • Phoenix 3.x - HBase 0.94.x
  • Phoenix 4.x - HBase 0.98.1+

2. 安装

hadoop2.5.1

hbase0.98.6.1

phoenix-4.4.0-HBase-0.98/

 

 

  • download and expand our installation tar
  • copy the phoenix jar into the HBase lib directory of every region server
  • restart the region servers
  • add the phoenix client jar to the classpath of your HBase client
  • download and setup SQuirrel as your SQL client so you can issue adhoc SQL against your HBase cluster

 

2.1下载

官网下载地址:http://www.apache.org/dyn/closer.cgi/phoenix/

2.2解压

上传到主节点指定目录下解压:

tar –zxvf phoenix-4.4.0-HBase-0.98-bin.tar.gz

2.3拷贝文件

将phoenix-4.4.0-HBase-0.98-server.jar拷贝到hbase集群的lib目录下

重启hbase集群,使其生效

2.4验证

cd /usr/local/phoenix-4.4.0-HBase-0.98-bin/bin

./sqlline.py 192.168.0.177

success

3. 创建表和视图

phoenix操作hbase,我们有两种方式,创建表,创建视图。

创建表的话,可读可写,就可以对HBase进行插入,查询,删除操作。

视图的话,是只读的,一般就只可以进行查询操作

虽然看起来,表的功能,比视图更强大一些。但是就像是mysql等关系型数据库一样,删除表操作,会将表删掉。但是删除视图操作,却不会影响原始表的结构。

因为使用phoenix,创建表后,会自动和hbase建立关联映射。当你使用phoenix删除和hbase之间的关系时,就会将hbase中的表也删掉了

所以如果只是用到查询功能,只需要建立视图就ok了。

创建表

create htablename(

    --这句话直接写就可以了,这样的话,HBase中的RowKey转换成phoenix中的主键,列名就叫 pk。
    --rowkey自动会和primary key进行对应。
    pk VARCHAR primary key null,

    --将名为cf的columnFamily下,字段名为col1的字段,写在这里。
    "cf"."col1" VARCHAR null,

    --将名为cf的columnFamily下,字段名为col2的字段,写在这里。。。下面就以此类推
    "cf"."col2" VARCHAR null,
    "cf2"."col3" VARCHAR null,
    "cf2"."col4" VARCHAR null
)

 

创建hbase中已存在表的视图

CREATE VIEW "login_log" ( pk VARCHAR PRIMARY KEY,"login"."usr" VARCHAR, "login"."timestamp" VARCHAR, "login"."ip" VARCHAR, "login"."province" VARCHAR, "login"."city" VARCHAR, "login"."district" VARCHAR, "login"."success" VARCHAR, "login"."type" VARCHAR)DEFAULT_COLUMN_FAMILY='login';


注意:phoenix区分大小写

"login_log" 用双引号是因为hbase中表名为login_log,为小写,双引号使创建的视图为小写,与hbase表对应。

如此处不加双引号,则创建的视图为LOGIN_LOG

字段也如此。

4. SQuirreL

第一步: 下载安装SQuirreL SQL Client :    http://www.squirrelsql.org/ 

第二步:  拷贝phoenix-{version}-client.jar 和 phoenix-core-{version}.jar到SQuirreL 安装目录下的lib文件夹下,这两个jar可以在phoenix的安装目录下找到。

第三步:  打开SQuirreL , 点击Drivers,新建一个driver:

name : 可以自定义一个名称

Example URL : 这个是为了让你新建一个连接的时候作为提示用的

Java Class Path : 这个需要选中之前上传的JAR

Class Name: org.apache.phoenix.jdbc.PhoenixDriver

第四步:创建Aliases(就是创建一个hbase的connection):

Name: 可以自定义

Driver: 选择之前配置好的phoenix driver

URL: 这里初始化显示的是之前配置的Example URL, 可以在这里做具体的修改,192.168.0.177修改为zk地址

配置好以后点击Test,输入服务器用户名、密码,测试连接,连接成功后进入如下页面:

查询已创建的视图:

此处只有一级索引,在通过非rowkey进行查询时查询速度会比较慢,300W数据会在10s左右,目前的Phoenix已支持二级索引,通过二级索引进行查询会实现毫秒级响应,下篇会介绍Phoenix二级索引的创建

 

posted @ 2015-06-30 09:30  huonan  阅读(3982)  评论(0编辑  收藏  举报