1 背景
最近涉及到的项目,同事在问hbase有没有类似于mysql的客户端,像关系数据库的语法操作在“NoSql“类型的库上。经查询资料遗憾的Hbase本身是暂不支持SQL查询及二级索引的。
2、简介
Hbase本身不支持SQL 查询,但还有它方式可以实现,如Hive,Impala,Phoenix等,众多方案各有优势,本文我们就对Phoenixf进行介绍
Apache Phoenix组件 官方注解为 “Phoenix -we put the SQL back in NoSql” 通过官方说明,Phoenix 的性能很高,相对于 hbase 原生的scan 并不会差多少,而对于类似的组件 hive、Impala等,性能有着显著的提升。
官网:https://phoenix.apache.org/performance.html
二、安装部署
1)环境说明:
Master 10.209.10.206
--Hmaster:active
Master 10.209.10.207
--Hmbase:standby
Slave 10.209.10.208
--Hregionservrer
Slave 10.209.10.210
--Hregionservrer
Slave 10.209.10.212
--Hregionservrer
2)测试中安装的hadoop ,Hbase 均为CDH版本,所以本次我们也安装phoenix for cloudera版本
Hadoop 版本
Hbase 版本
由于phoenix for
CDH 版本没有编译好的可执行文件,需要自己下载编译
Github:https://github.com/chiastic-security/phoenix-for-cloudera/tree/4.6-HBase-1.0-cdh5.5
我们选择是phoeix4.6-Hbase-1.0-cdh5.5的然后clone or download到本地。
我们选择MVN进行编译:
编译:
[if !supportLists]1> [endif]解压下载的source源代码的压缩文件。
[if !supportLists]2> [endif]打开文件下的build.txt,根据里面的编译步骤进行编译。
[if !supportLists]3> [endif]本次编译使用的mvn clean package -DskipTests (maven请自行安装)
编译后的文件,phoenix-for-cloudera-4.6-HBase-1.0-cdh5.5\phoenix-assembly\targt目录下。
上传至后台Hbase主机。
[if !supportLists]1> [endif]解压缩后,把phoenix-4.6.0-cdh5.5.1-server.jar包复制regionserver 主机.
[if !supportLists]2> [endif]重启Hbase
[if !supportLists]3> [endif]测试是否可以正常连接,通过bin/sqlline.py进行连接sqlline.py后台的地址是zookeeper的地址及端口。
可以通过select 进行查询了(注意:表名要加“” 因为Hbase区分大小写,会把小写自动转为大字字母。)
说明此时连接上了。
Squirrel配置:
Squirrel是一个界面化连接Hbase的一个工具。
[if !supportLists]1) [endif]下载Squirrel
官网地址:http://www.squirrelsql.org/
本次下载了最新的version 3.8.1。
2)下载到本地为一个jar包,双击执行
根据安装界面提示进行下一步安装。
3)安装完squirrel后进行配置,把Phoenix目录下几个包要复制到squirrel/lib目录下。
phoenix-4.6.0-cdh5.5.1-client.jar
phoenix-4.6.0-cdh5.5.1-client-minimal.jar
phoenix-core-4.6.0-cdh5.5.1.jar
phoenix-server-4.6.0-cdh5.5.1.jar
phoenix-server-client-4.6.0-cdh5.5.1.jar
phoenix-4.6.0-cdh5.5.1-server.jar
4)启动quirrel 双击squirrel-sql.bat
5)在启动成功后的界面中单南Drivers
Name:随便写我们这个为phoenix
Example URL:连接的驱动类型及地址:jdbc:phoenix:10.209.10.212:11001
Java class path:我们选择:phoenix-4.6.0-cdh5.5.1-server.jar
Class name:org.apache.phoenix.jdbc.PhoenixDriver
完毕,点击OK进行保存。
6)连接创建:连接Phoenix
点击Aliases,单击+号[
Name:随便写,我们这儿写hbase
Driver:选择我们刚创建的phoenix
User name:为登录主机的用户名
Passworkd:登录主机密码
可以勾选Auto logon 进行自动登录。
登录成功的界面。
在SQL窗口可进行select 语句的编写,如下图。
注:
在后台Hhbase shell中创建的表,在前台通过squirrel连接phoenix这种 方式是看不到的。
需要进行映射。
在squirrel中创建同名同结构的表即可,数据会自动关联映射。