Phoenix(凤凰)安装部署及介绍

Apache Phoenix是一个开源的SQL引擎,用于高效地操作HBase数据表,提供JDBC接口。相比HBase原生API,Phoenix提升了查询性能并简化了开发流程。支持批处理、命令行、GUI和JDBC等多种调用方式,包括INSERT/UPDATE操作和二级索引等高级功能。

Phoenix介绍

phoenix,中文译为“凤凰”,很美的名字。Phoenix是由saleforce.com开源的一个项目,后又捐给了Apache基金会。它相当于一个Java中间件,提供jdbc连接,操作hbase数据表。Phoenix是一个HBase的开源SQL引擎。你可以使用标准的JDBC API代替HBase客户端API来创建表,插入数据,查询HBase数据。
支持SQL的还有Hive和Impala。但是Hive和Impala还可以查询文本文件,Phoenix只能查Hbase。
Phoenix是构建在HBase之上的SQL引擎。其查询效率相同或高于Hbase原生查询性能,同时提高了开发效率,降低学习成本。除此之外,Phoenix还做了一些增强功能来更多地优化性能,例如二级索引、跳过扫描过滤器优化IN,LIKE,OR查询、优化主键。

Phoenix的安装部署

1 、提前安装好ZK集群、hadoop集群、Hbase集群
2、从对应的地址下载:http://mirrors.cnnic.cn/apache/phoenix/
这里我们使用的是:apache-phoenix-4.14.0-		cdh5.14.2-bin.tar.gz
3、上传、解压 
将对应的安装包上传到对应的Hbase集群其中一个服务器的/export/softwares目录下
解压:tar zxvf apache-phoenix-4.14.0-cdh5.14.2-	bin.tar.gz -C /export/servers/
重命名:mv apache-phoenix-4.14.0-cdh5.14.2-bin/ 	phoenix
4、配置
(1) 将phoenix目录下的phoenix-4.14.0-cdh5.14.2-server.jar拷贝到各个 hbase的lib目录下。
在hbase 配置值文件hbase-site.xml文件中添加配置
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase</value>
</property>
同步至所有hbase节点后,将hbase-site.xml拷贝到phoenix/bin目录下
(2)重启hbase集群,使Phoenix的jar包生效。
5、验证是否成功
在phoenix/bin下输入命令:
端口可以省略
[root@node01 bin]# ./sqlline.py node01:2181


输入!tables 查看都有哪些表。SYSTEM为Phoenix系统表,系统表中维护了用户表的元数据信息。

退出Phoenix。输入!quit  或!q

Phoenix使用

Phoenix可以有4种方式调用:

批处理方式
命令行方式
GUI方式
JDBC调用方式

(1)批处理方式

A: 创建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)
);
B: 创建user_phoenix.csv数据文件
NY,New York,8143197
CA,Los Angeles,3844829
IL,Chicago,2842518
TX,Houston,2016582
PA,Philadelphia,1463281
AZ,Phoenix,1461575
TX,San Antonio,1256509
CA,San Diego,1255540
TX,Dallas,1213825
CA,San Jose,912332
C: 创建user_phoenix_query.sql文件
内容为:
SELECT state as "State",count(city) as "City 	Count",sum(population) as "Population Sum" FROM user_phoenix GROUP BY state ORDER BY sum(population) DESC; 
D: 执行
python /export/servers/phoenix-4.14.0-cdh5.14.2/bin/psql.py node01:2181 user_phoenix.sql user_phoenix.csv  user_phoenix_query.sql
这条命令同时做了三件事:创建表、插入数据、查询结果

用Hbase shell 看下会发现多出来一个 USER_PHOENIX 表,用scan 命令查看一下这个表的数据

结论:
之前定义的Primary key 为state,city, 于是Phoenix就把输入的state,city的值拼起来成为rowkey
其他的字段还是按照列名去保存,默认的列族为0
还有一个0:_0这个列是没有值的,这个是Phoenix处于性	能方面考虑增加的一个列,不用管这个列

(2) 命令

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值