概述
Hbase适合存储大量的对关系运算要求低的NOSQL数据,受Hbase 设计上的限制不能直接使用原生的PAI执行在关系数据库中普遍使用的条件判断和聚合等操作。Hbase很优秀,一些团队寻求在Hbase之上提供一种更面向普通开发人员的操作方式,Apache Phoenix即是。
Phoenix 基于Hbase给面向业务的开发人员提供了以标准SQL的方式对Hbase进行查询操作,并支持标准SQL中大部分特性:条件运算,分组,分页,等高级查询语法。
注:不对Phoenix 架构做整体介绍,仅用示例来演示如何操作,如何在不同场景下使用。
集群环境
ZK:host101,host102,host103
Hadoop:host102[主],host103[备],host104,host105,host106
Hbase:host102[备],host103[主],host104,host105,host106
Phoenix:host104[主]
注意事项: Hbase和Hadoop的版本号需要兼容
Phoneix安装
- 下载: http://phoenix.apache.org/ 得到apache-phoenix-4.10.0-HBase-1.2-bin.tar.gz
- 解压到主机host104 /app/ 路径下
- 分发安装目录下phoenix-4.10.0-HBase-1.2-server.jar 文件到 Hbase 所有节点的安装目录下lib目录中.
- 重启Hbase 集群
在 Linux shell中操作
在Phoenix安装目录下bin子目录下执行 ./sqlline.py host101 进入Phoenix shell环境。
创建表 create table itinfo(id varchar primary key,name varchar,ageinteger);
列出表 !tables;
插入一条数据 upsert into itinfo values('1001','itxiaofen',26);
查询全部数据,条件运算,排序,分组 select * from itinfo; select * from itinfo where age>=27; select * from itinfo order by age desc; select age,count(1) from itinfo group by age ;
登录Hbase shell查看有什么变化 Hbase安装目录下下执行bin/hbase shell 列出所有Hbase表执行list,经确认Phoenix帮我们在Hbase中做了很多事情, Hbase表的创建,数据插入等操作。以SYSTEM.开始的表为Phoenix的元数据表。
总结一下,上次通过Phoenix提供的API以SQL的方式来操作Hbase表, Phoenix在集群中并行高校的拆分SQL调用Hbase API执行扫描和聚合操作, 性能请参考Phoenix官网介绍