1、Phoenix简介及安装
1.1 Phoenix简介
Apache Phoenix通过结合以下两方面的优势,为Hadoop的低延迟应用程序提供OLTP和运营分析功能:
· 具有完整ACID事务处理能力的标准SQL和JDBC API的强大功能
· 通过利用HBase作为其后备存储,NoSQL世界的后期绑定,模式读取功能的灵活性
Apache Phoenix与其他Hadoop产品完全集成,如Spark,Hive,Pig,Flume和Map Reduce。
1.2 环境说明
使用版本说明 :
Hbase : 1.2.5
Phoenix (version 4.13)
sqlline version 1.2.0
phoenix安装节点 : 192.168.1.54 node005
192.168.1.55 node006
192.168.1.57 node007
192.168.1.58 node008
192.168.1.59 node009
192.168.1.60 node010
phoenix下载链接 : http://phoenix.apache.org/download.html
1.3 安装过程
安装过程很简单,在这里不赘述.
需要注意的地方 :
要把phoenix安装目录下的:
phoenix-4.13.1-HBase-1.2-server.jar
拷贝到hbase的lib目录下
启动方法 : 进入到phoenix安装目录下的bin目录下
执行 ./sqlline.py node005:4180
其中node005指的是安装了phoenix的一台服务器
4180是zookeeper对应的端口号
出现如下提示,证明phoenix安装并启动成功:
2、SQuirrel简介及安装
2.1 SQuirrel简介
概观
SQuirreL SQL Client是一个图形Java程序,它允许您查看JDBC兼容数据库的结构,浏览表中的数据,发出SQL命令等.从SQuirreL版本3.0开始,Java支持的最低版本是1.6.x。
SQuirreL的功能可以通过使用插件来扩展 。
SQuirrel最初是在GNU通用公共许可证下 发布的。从版本1.1beta2开始,它已经在 GNU Lesser General Public License下发布。
2.2 环境说明
使用版本说明:
1. SQuirrel版本: Version 3.8.1
2. JDK版本 : 1.8.0_131
下载链接 : http://www.squirrelsql.org/#installation
2.3 安装过程
安装过程十分简单,一路next即可.
需要注意的地方 : 需要把phoenix安装目录下的phoenix-4.13.1-HBase-1.2-client.jar 拷贝到squirrel-sql安装目录的lib文件夹下
Squirrel-sql的安装目录结构如下图所示:
启动方式 : 点击squirrel-sql.bat即可
接下来 : 添加Phoenix驱动
点击驱动程序,如果是英文版的,点击Drivers
点击+,添加新的驱动程序 :
其中:
名字(Name): Phoenix
类名(ClassName)为:org.apache.phoenix.jdbc.PhoenixDriver
地址示例 : jdbc:phoenix:192.168.1.56:4180
注意 : 如果zookeeper端口号不是默认的2181的话 一定要在服务器后面加上 : zookeeper端口号,否则会连接不上!!!
配置好就可以点击别名 进行连接了!
那么这个连接上的原理是什么呢?
去当前用户下的.squirrel-sql文件夹里面去一探究竟:
注意文件SQLDrivers.xml
打开该文件:
拖到该文件的最后,看到了我们刚刚配置的Phoenix的连接!
3、使用SQuirrel操作hbase
3.1 操作hbase中不存在的表
简单示例 :
创建一个person表格进行测试 :
操作如下 :
点击SQL,写好SQL语句
create table person (id integer not null primary key,name varchar,age integer);
点击run(奔跑的小人)即可!
或者ctrl + enter组合键执行
查看phoenix里面对应的该表 :
执行命令 : !table
可以看到 : 在phoenix这张表的表名为 : PERSON
需要注意的是:
通过squirrel添加的表,会自动转换为大写,而Phoenix是区分大小写的,所以在Hbase Shell下,表名都要用大写
再去hbase下面看对应的该表 :
执行命令 : list
该表的详细描述 :
执行命令 : descirbe ‘PERSON’
3.2 操作hbase中已经的表
可以看到 , 通过SQuirrel创建的表,在hbase,phoenix里都会生成相对应的表,
但是hbase创建的表,在phoenix里面是找不到的
在hbase里面创建一张表 :
执行命令 : create ‘TEST ’ ,’info’
向表格里面插入一条数据 :
put 'TEST','person', 'info:xuemengran', '14'
但是去SQuirrel客户端里面去查看,发现是不存在该表的,
这个时候, 需要手动建立hbase到phoenix的映射,执行命令 :
create table TEST(id integer not null primary key,name2 varchar,age integer);
执行结束后就能够看到该表
删除该表:
drop table TEST;
执行结束后,去hbase 下面看, 发现hbase的相应表结构也被删除了!
所以如果是按照表格-->表格的映射操作时,在squirrel执行删除操作时要慎重!
4、问题总结
1. Phoenix启动的时候报错
Error: ERROR 2007 (INT09): Outdated jars. Newer Phoenix clients can't communicate with older Phoenix servers. The following servers require an updated phoenix-[version]-server.jar to be put in the classpath of HBase: region=SYSTEM.CATALOG,,1516957847613.3a7da538a42e15e4b52f4ff9026a3df9., hostname=master,16020,1526467301507, seqNum=33 (state=INT09,code=2007)
问题原因 : phoenix和hbase版本不匹配
解决办法 : 更换一个更新的hbase版本,或者降低一下Phoenix版本
2. SQuirrel卸载重装后,不能正常使用的问题
问题原因 : SQuirrel安装后,会在c盘当前用户的目录下,创建一个.squirrel-sql文件夹
卸载重装后,该文件夹会对新装的SQuirrel产生影响
解决办法 : 重新安装前,要首先清空该文件夹