maoyg0 2014-09-13
Apache Phoenix 是 HBase 的 SQL 驱动。Phoenix 使得 HBase 支持通过 JDBC 的方式进行访问,并将你的 SQL 查询转成 HBase 的扫描和相应的动作。
兼容性:
1:hbase 0.94.21 的安装
2:下载phoenix 3.1
[linuxidc@linuxidc02 ~]# wget http://mirrors.hust.edu.cn/apache/phoenix/phoenix-3.1.0/bin/phoenix-3.1.0-bin.tar.gz
--2014-09-12 22:03:44-- http://mirrors.hust.edu.cn/apache/phoenix/phoenix-3.1.0/bin/phoenix-3.1.0-bin.tar.gz
正在解析主机 mirrors.hust.edu.cn... 202.114.18.160
正在连接 mirrors.hust.edu.cn|202.114.18.160|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:55480477 (53M) [application/octet-stream]
正在保存至: “phoenix-3.1.0-bin.tar.gz”
2014-09-12 22:16:29 (70.8 KB/s) - 已保存 “phoenix-3.1.0-bin.tar.gz” [55480477/55480477])
3:解压
[linuxidc@linuxidc02 ~]$ tar zxf phoenix-3.1.0-bin.tar.gz
[linuxidc@linuxidc02 ~]$ cd phoenix-3.1.0-bin
[linuxidc@linuxidc02 phoenix-3.1.0-bin]$ ls
CHANGES common examples Hadoop1 hadoop2 LICENSE NOTICE README
4:配置
参考:http://phoenix.apache.org/download.html
我这里使用的是Phoenix 3.x
To install a pre-built phoenix, use these directions:
[linuxidc@linuxidc02 phoenix-3.1.0-bin]$ cd common
[linuxidc@linuxidc02 common]$ ls
phoenix-3.1.0-client-minimal.jar phoenix-3.1.0-client-without-hbase.jar phoenix-core-3.1.0.jar
[linuxidc@linuxidc02 common]$ cp ./phoenix-core-3.1.0.jar /home/linuxidc/hbase-0.94.21/lib
[linuxidc@linuxidc02 common]$ scp ./phoenix-core-3.1.0.jar linuxidc@linuxidc01:/home/linuxidc/hbase-0.94.21/lib
phoenix-core-3.1.0.jar 100% 2178KB 2.1MB/s 00:00
[linuxidc@linuxidc02 common]$ cd ..
在配置文件/home/linuxidc/.bash_profile中
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/home/linuxidc/phoenix-3.1.0-bin/hadoop1/phoenix-3.1.0-client-hadoop1.jar
然后重启HBase
[linuxidc@linuxidc01 hbase-0.94.21]$ bin/stop-hbase.sh
stopping hbase................
linuxidc01: stopping zookeeper.
linuxidc02: stopping zookeeper.
[linuxidc@linuxidc01 hbase-0.94.21]$ bin/start-hbase.sh
linuxidc01: starting zookeeper, logging to /home/linuxidc/hbase-0.94.21/bin/../logs/hbase-linuxidc-zookeeper-linuxidc01.out
linuxidc02: starting zookeeper, logging to /home/linuxidc/hbase-0.94.21/bin/../logs/hbase-linuxidc-zookeeper-linuxidc02.out
starting master, logging to /home/linuxidc/hbase-0.94.21/logs/hbase-linuxidc-master-linuxidc01.out
linuxidc01: starting regionserver, logging to /home/linuxidc/hbase-0.94.21/bin/../logs/hbase-linuxidc-regionserver-linuxidc01.out
linuxidc02: starting regionserver, logging to /home/linuxidc/hbase-0.94.21/bin/../logs/hbase-linuxidc-regionserver-linuxidc02.out
5:启动和简单操作
[linuxidc@linuxidc02 bin]$ sqlline.py localhost
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:localhost none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:localhost
Connected to: Phoenix (version 3.1)
Driver: org.apache.phoenix.jdbc.PhoenixDriver (version 3.1)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
Building list of tables and columns for tab-completion (set fastconnect to true to skip)...
59/59 (100%) Done
Done
sqlline version 1.1.2
0: jdbc:phoenix:localhost> select * from b_month
. . . . . . . . . . . . .> ;
Error: ERROR 1012 (42M03): Table undefined. tableName=B_MONTH (state=42M03,code=1012)
0: jdbc:phoenix:localhost> create table test (a integer primary key, b integer) ;
No rows affected (1.534 seconds)
0: jdbc:phoenix:localhost> UPSERT INTO TEST VALUES (1, 1);
1 row affected (0.018 seconds)
0: jdbc:phoenix:localhost> UPSERT INTO TEST VALUES (2, 12);
1 row affected (0.01 seconds)
0: jdbc:phoenix:localhost> select * from test;
+------------+------------+
| A | B |
+------------+------------+
| 1 | 1 |
| 2 | 12 |
+------------+------------+
2 rows selected (0.056 seconds)
0: jdbc:phoenix:localhost>
6:查看hbase中的表test
[linuxidc@linuxidc01 hbase-0.94.21]$ hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.21, r83b4a1ee9b9a2fa4c7ae1739259e041cabe8edc2, Fri Jun 27 16:14:16 UTC 2014
hbase(main):001:0> list
TABLE
SYSTEM.CATALOG
SYSTEM.SEQUENCE
TEST
b_month
mytable
5 row(s) in 0.6250 seconds
hbase(main):003:0> scan 'TEST'
ROW COLUMN+CELL
\x80\x00\x00\x01 column=0:B, timestamp=1410534991931, value=\x80\x00\x00\x01
\x80\x00\x00\x01 column=0:_0, timestamp=1410534991931, value=
\x80\x00\x00\x02 column=0:B, timestamp=1410535001115, value=\x80\x00\x00\x0C
\x80\x00\x00\x02 column=0:_0, timestamp=1410535001115, value=
2 row(s) in 0.0770 seconds
hbase(main):004:0>
HBase 的详细介绍:请点这里
HBase 的下载地址:请点这里