零:复习
1. hbase的协处理器问题
(1) 协处理器的代码逻辑有异常,可能会造成hbase的regionserver瘫痪。
解决办法:关掉hbase的所有守护进程,进入zookeeper里删除相应的表元数据,再启动hbase,删除对应的表。修改完代码逻辑后,重新维护。
(2) 代码没问题,hbase的集群缺少设置。如:....DoNotReTRYException:could not......Set hbase.table.sanity.checks to false......
解决办法:在hbase-site.xml里设置hbase.table.sanity.checks属性的值为false
一、phoenix的简介与特点
1.1 简介
1. phoenix是apache组织旗下的一款产品。相当于java中间件,可以类似jdbc访问RDBMS一样,来访问HBase
2. phoenix是可以运行在hbase上的一个sql层。可以对hbase进行增删改查和管理数据的。
3. phoenix的sql语句,在底层会被翻译成hbase的api,比如scan/get操作
4. phoenix适合做离线批处理(OLAP)操作,不适合做实时分析操作(OLTP)
2.1 特点
phoenix虽然是构建在hbase层之上,但是由于以下特点,不会影响查询性能,反而会提高性能
- 编译SQL查询为原生HBase的scan语句
- 检测scan语句最佳的开始和结束的key
- 精心编排你的scan语句让他们并行执行
- 让计算去接近数据
- 推送你的WHERE子句的谓词到服务端过滤器处理
- 执行聚合查询通过服务端钩子(称为协同处理器)
phoenix还提供了一些增强优化性能
- 实现了二级索引来提升非主键字段查询的性能
- 统计相关数据来提高并行化水平,并帮助选择最佳优化方案
- 跳过扫描过滤器来优化IN,LIKE,OR查询
- 优化主键来均匀分布写压力
phoenix不能做的事情
- 不支持事务处理
- 不支持复杂的条件
二、phoenix安装
2.1 环境需求:
1. jdk1.8.0以上
2. hadoop2.7.6
3. zookeeper-3.4.10
4. hbase-1.2.1
2.2 搭建步骤
安装phoenix,就相当于在一台机器上安装navicat工具。
1)上传,解压,更名,配置环境变量,生效,验证
[root@qianfeng01 ~]# tar -zxvf apache-phoenix-4.13.1-HBase-1.2-bin.tar.gz -C /usr/local/
[root@qianfeng01 ~]# cd /usr/local/
[root@qianfeng01 local]# mv apache-phoenix-4.13.1-HBase-1.2-bin/ phoenix
[root@qianfeng01 local]# vim /etc/profile
[root@qianfeng01 local]# source /etc/profile
验证是否能补全相关指令, 输入psq然后按tab键
2)拷贝phoenix的两个jar包(core和client)到hbase的所有服务端的相关目录下(hbase的lib目录)
[root@qianfeng01 phoenix]# cp phoenix-4.13.1-HBase-1.2-client.jar phoenix-core-4.13.1-HBase-1.2.jar /usr/local/hbase/lib/
[root@qianfeng01 phoenix]# scp phoenix-4.13.1-HBase-1.2-client.jar phoenix-core-4.13.1-HBase-1.2.jar qianfeng02:/usr/local/hbase/lib/
[root@qianfeng01 phoenix]# scp phoenix-4.13.1-HBase-1.2-client.jar phoenix-core-4.13.1-HBase-1.2.jar qianfeng03:/usr/local/hbase/lib/
3)配置三台hbase的hbase-site.xml文件
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>
<property>
<name>hbase.table.sanity.checks</name>
<value>false</value>
</property>
4)拷贝hbase的hbase-site.xml到phoenix的bin目录下,覆盖自带的文件
[root@qianfeng01 phoenix]# cp /usr/local/hbase/conf/hbase-site.xml ./bin
2.3 启动操作
1. 先启动hdfs和zookeeper (phoenix是通过zookeeper连接hbase)
2. 再启动hbase(注意:如果在配置phoenix前已经启动了hbase,需要重启),(hbase里的新配置会跟着生效)
3. 启动phoenix客户端
[root@qianfeng01 phoenix]# sqlline.py
可以使用help查看常用指令,也可以使用!table查看是否有四张系统表。
注意:在启动时可能报以下错误
Traceback (most recent call last):
File "./sqlline.py", line 27