Apache Phoenix 是 HBase 的 SQL 驱动。Phoenix 使得 HBase 支持通过 JDBC 的方式进行访问,并将你的 SQL 查询转成 HBase 的扫描和相应的动作。
兼容性:
Phoenix 2.x - HBase 0.94.x
Phoenix 3.x - HBase 0.94.x
Phoenix 4.x - HBase 0.98.1+
1:hbase 0.94.21 的安装
参考http://blog.csdn.net/wind520/article/details/38614315
2:下载phoenix 3.1
[jifeng@jifeng02 ~]# 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])
[jifeng@jifeng02 ~]$ tar zxf phoenix-3.1.0-bin.tar.gz [jifeng@jifeng02 ~]$ cd phoenix-3.1.0-bin [jifeng@jifeng02 phoenix-3.1.0-bin]$ ls CHANGES common examples hadoop1 hadoop2 LICENSE NOTICE README
参考:http://phoenix.apache.org/download.html
我这里使用的是Phoenix 3.x
To install a pre-built phoenix, use these directions:
[jifeng@jifeng02 phoenix-3.1.0-bin]$ cd common [jifeng@jifeng02 common]$ ls phoenix-3.1.0-client-minimal.jar phoenix-3.1.0-client-without-hbase.jar phoenix-core-3.1.0.jar [jifeng@jifeng02 common]$ cp ./phoenix-core-3.1.0.jar /home/jifeng/hbase-0.94.21/lib [jifeng@jifeng02 common]$ scp ./phoenix-core-3.1.0.jar jifeng@jifeng01:/home/jifeng/hbase-0.94.21/lib phoenix-core-3.1.0.jar 100% 2178KB 2.1MB/s 00:00 [jifeng@jifeng02 common]$ cd ..
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/home/jifeng/phoenix-3.1.0-bin/hadoop1/phoenix-3.1.0-client-hadoop1.jar
然后重启HBase
[jifeng@jifeng01 hbase-0.94.21]$ bin/stop-hbase.sh stopping hbase................ jifeng01: stopping zookeeper. jifeng02: stopping zookeeper. [jifeng@jifeng01 hbase-0.94.21]$ bin/start-hbase.sh jifeng01: starting zookeeper, logging to /home/jifeng/hbase-0.94.21/bin/../logs/hbase-jifeng-zookeeper-jifeng01.out jifeng02: starting zookeeper, logging to /home/jifeng/hbase-0.94.21/bin/../logs/hbase-jifeng-zookeeper-jifeng02.out starting master, logging to /home/jifeng/hbase-0.94.21/logs/hbase-jifeng-master-jifeng01.out jifeng01: starting regionserver, logging to /home/jifeng/hbase-0.94.21/bin/../logs/hbase-jifeng-regionserver-jifeng01.out jifeng02: starting regionserver, logging to /home/jifeng/hbase-0.94.21/bin/../logs/hbase-jifeng-regionserver-jifeng02.out
5:启动和简单操作
[jifeng@jifeng02 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>
[jifeng@jifeng01 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>