Hbase的脚本语法对于用惯了关系型数据库的程序员来讲很不爽,而使用Phoenix结合SQuirrel可以实现在Windows下,使用界面化的方式通过正常SQL语法操作Hbase,具体PHoenix和SQuirrel的详细信息在这里不做介绍了,读者可自行百度,这里给出Phoenix的官网地址:http://phoenix.apache.org/index.html。
一、环境
1台64位Centos6.8操作系统,hadoop-2.8.1,hbase-1.2.6,均为伪分布式部署。
二、安装Phoenix
1、下载Phoenix
官网下载连接:http://www.apache.org/dyn/closer.lua/phoenix/,点进去后选择镜像地址,然后选择和hadoop相对应的版本,我下载的为apache-phoenix-4.11.0-HBase-1.2-bin.tar.gz。
wget http://mirrors.hust.edu.cn/apache/phoenix/apache-phoenix-4.11.0-HBase-1.2/bin/apache-phoenix-4.11.0-HBase-1.2-bin.tar.gz
将apache-phoenix-4.11.0-HBase-1.2-bin.tar.gz解压到/server目录下
tar -zxvf apache-phoenix-4.11.0-HBase-1.2-bin.tar.gz -C /server/
解压后,把phoenix-{version}-server.jar拷贝到hbase的lib目录下,重启hbase。
3、连接Hbase
进入【PHOENIX_HOME/bin】目录下启动客户端进入CLI界面,执行如下命令连接HBase集群。
$ ./sqlline.py localhost
其中,localhost 参数是HBase集群zookeeper集群的ip地址,如:./sqlline.py 192.168.187.128,192.168.187.129,192.168.187.130:2181,
这里的192.168.187.128,192.168.187.129,192.168.187.130参数是HBase集群zookeeper集群的ip地址,2181是zookeeper端口号,由于我使用的默认端口,所以不需加端口号。
4、查看当前表
!tables
三、安装Windows环境下的 SQuirrel客户端
1、下载SQuirrel:
官网下载地址:http://squirrel-sql.sourceforge.net/
2、安装Squirrel
在cmd下,进入到squirrel-sql-3.7.1-standard.jar所在目录,执行如下命令:
java -jar squirrel-sql-3.7.1-standard.jar
然后,除了选择安装路径,其它的可按需选择,否则一路“next”即可。
(1)将服务器上Phoenix安装目录下的phoenix-4.11.0-HBase-1.2-client.jar文件,下载到Windows下squirrel-sql安装目录的lib文件夹下,并点击squirrel-sql.bat启动。
(2)添加新的驱动(Drivers -> New Driver),如下图所示:
(3)在弹出的“Add Driver”窗口中,设置Driver的“Name”为:Phoenix,“Phoenix”为:jdbc:phoenix:vmserver,其中,vmserver为你Phoenix服务器的地址;“ClassName”为:org.apache.phoenix.jdbc.PhoenixDriver,最终结果如下图:
设置完成后,点击OK关闭。
(4)点击“Drivers”边上的“Alias”选项卡,和第(2)步的新建驱动一样新建Alias (Aliases -> New Aliases),在弹出的窗口中,填写Name,UserName,Password,这三项可任意填写,在Driver选项的下拉列表中查找我们刚添加的Phoenix驱动,然后点击“Test”按钮测试连接,然后点击“Connect”按钮,弹出“Connection successful”表示配置成功。结果如下图:
点击OK按钮,关闭弹出窗口。
(5)双击新建的test Alias ,然后点击“Connect”按钮,打开SQL命令行,在“SQL”选项卡下,即可编写sql命令,新建一张person表进行测试
create table person (id integer not null primary key,name varchar,age integer)
插入一条数据:
upsert into person values (1,'zhangsan' ,18)
查询数据:
select * from person
查询结果如下图所示:
list
注意:通过squirrel添加的表,会自动转换为大写,由于Phoenix是区分大小写的,所以在Hbase Shell下,表名都要用大写,如:desc 'PERSON',如果用desc 'person'是会报错的。