Phoenix 的安装使用
phoenix 图解详细安装地址:https://www.cnblogs.com/zlslch/p/7096353.html
1. 什么是Phoenix?
phoenix,中文译为“凤凰”,很美的名字。Phoenix是由saleforce.com开源的一个项目,后又捐给了Apache基金会。它相当于一个Java中间件,提供jdbc连接,操作hbase数据表。Phoenix是一个HBase的开源SQL引擎。你可以使用标准的JDBC API代替HBase客户端API来创建表,插入数据,查询你的HBase数据。Phoenix的团队用了一句话概括Phoenix:“We put the SQL back in NoSQL” 意思是:我们把SQL又放回NoSQL去了!这边说的NoSQL专指HBase,意思是可以用SQL语句来查询Hbase,你可能会说:“Hive和Impala也可以啊!”。但是Hive和Impala还可以查询文本文件,Phoenix的特点就是,它只能查Hbase,别的类型都不支持!但是也因为这种专一的态度,让Phoenix在Hbase上查询的性能超过了Hive和Impala!
2. Phoenix性能
Phoenix是构建在HBase之上的SQL引擎。你也许会存在“Phoenix是否会降低HBase的效率?”或者“Phoenix效率是否很低?”这样的疑虑,事实上并不会,Phoenix通过以下方式实现了比你自己手写的方式相同或者可能是更好的性能(更不用说可以少写了很多代码):
1. 编译你的SQL查询为原生HBase的scan语句。
检测scan语句最佳的开始和结束的key。
精心编排你的scan语句让他们并行执行。
推送你的WHERE子句的谓词到服务端过滤器处理。
执行聚合查询通过服务端钩子(称为协同处理器)。
2.除此之外,Phoenix还做了一些有趣的增强功能来更多地优化性能:
实现了二级索引来提升非主键字段查询的性能。
统计相关数据来提高并行化水平,并帮助选择最佳优化方案。
跳过扫描过滤器来优化IN,LIKE,OR查询。
优化主键的来均匀分布写压力。
- Phoenix的安装部署
3.1、准备工作
提前安装好ZK集群、hadoop集群、Hbase集群3.2、安装包
从对应的地址下载:http://mirrors.cnnic.cn/apache/phoenix/
这里我们使用的是:
phoenix-4.8.2-HBase-1.2-bin.tar.gz
下载地址:http://archive.apache.org/dist/phoenix/
3.3、上传、解压
将对应的安装包上传到对应的Hbase集群其中一个服务器的一个目录下
解压:tar -zxvf phoenix-4.8.2-HBase-1.2-bin.tar.gz -C /var/local
重命名:mv phoenix-4.8.2-HBase-1.2-bin phoenix
3.4、配置(成功:将集群的每台机器上 下面俩个jar 拷贝,然后主机那台机器上做(2)操作)
(1) 将phoenix目录下的phoenix-4.8.2-HBase-1.2-server.jar、
phoenix-core-4.8.2-HBase-1.2.jar拷贝到各个 hbase的lib目录下。
(2)将hbase的配置文件hbase-site.xml、 hadoop/etc/hadoop下的core-site.xml 、hdfs-site.xml放到phoenix/bin/下,替换phoenix原来的配置文件。
(3)重启hbase集群,使Phoenix的jar包生效。
3.5、验证是否成功
(1)在phoenix/bin下输入命令:
端口可以省略
[root@itcast01 bin]# ./sqlline.py itcast01:2181
出现如下界面说明启动成功
(2)输入!tables 查看都有哪些表。红框部分是用户建的表,其他为Phoenix系统表,系统表中维护了用户表的元数据信息。
±-----------±-------------±---------------±--------------±---------±-----------±----------------+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | TYPE_NAME | SELF_REFERENCIN |
±-----------±-------------±---------------±--------------±---------±-----------±----------------+
| | SYSTEM | CATALOG | SYSTEM TABLE | | | |
| | SYSTEM | FUNCTION | SYSTEM TABLE | | | |
| | SYSTEM | SEQUENCE | SYSTEM TABLE | | | |
| | SYSTEM | STATS | SYSTEM TABLE | | | | |
±-----------±-------------±---------------±--------------±---------±-----------±----------------+
(3)退出Phoenix。输入!quit
4. Phoenix使用
Phoenix可以有4种方式调用:
批处理方式
命令行方式
GUI方式
JDBC调用方式
4.1 批处理方式
4.1.1 创建user_phoenix.sql文件
内容如下
CREATE TABLE IF NOT EXISTS user_phoenix ( state CHAR(2) NOT NULL, city VARCHAR NOT NULL, population BIGINT CONSTRAINT my_pk PRIMARY KEY (state, city));
4.1.2 创建user_phoenix.csv数据文件
NY,New York,8143197
CA,Los Angeles,3844829
IL