1. 簡介
Apache Phoenix,是由saleforce.com開源的一個項目,后又捐給了Apache基金會。它相當於一個Java中間件,提供jdbc連接,操作hbase數據表,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+
2. 安裝
hadoop2.5.1
hbase0.98.6.1
phoenix-4.4.0-HBase-0.98/
- download and expand our installation tar
- copy the phoenix jar into the HBase lib directory of every region server
- restart the region servers
- add the phoenix client jar to the classpath of your HBase client
- download and setup SQuirrel as your SQL client so you can issue adhoc SQL against your HBase cluster
2.1下載
官網下載地址:http://www.apache.org/dyn/closer.cgi/phoenix/
2.2解壓
上傳到主節點指定目錄下解壓:
tar –zxvf phoenix-4.4.0-HBase-0.98-bin.tar.gz
2.3拷貝文件
將phoenix-4.4.0-HBase-0.98-server.jar拷貝到hbase集群的lib目錄下
重啟hbase集群,使其生效
2.4驗證
cd /usr/local/phoenix-4.4.0-HBase-0.98-bin/bin
./sqlline.py 192.168.0.177
success
3. 創建表和視圖
phoenix操作hbase,我們有兩種方式,創建表,創建視圖。
創建表的話,可讀可寫,就可以對HBase進行插入,查詢,刪除操作。
視圖的話,是只讀的,一般就只可以進行查詢操作
雖然看起來,表的功能,比視圖更強大一些。但是就像是mysql等關系型數據庫一樣,刪除表操作,會將表刪掉。但是刪除視圖操作,卻不會影響原始表的結構。
因為使用phoenix,創建表后,會自動和hbase建立關聯映射。當你使用phoenix刪除和hbase之間的關系時,就會將hbase中的表也刪掉了
所以如果只是用到查詢功能,只需要建立視圖就ok了。
創建表
create htablename( --這句話直接寫就可以了,這樣的話,HBase中的RowKey轉換成phoenix中的主鍵,列名就叫 pk。 --rowkey自動會和primary key進行對應。 pk VARCHAR primary key null, --將名為cf的columnFamily下,字段名為col1的字段,寫在這里。 "cf"."col1" VARCHAR null, --將名為cf的columnFamily下,字段名為col2的字段,寫在這里。。。下面就以此類推 "cf"."col2" VARCHAR null, "cf2"."col3" VARCHAR null, "cf2"."col4" VARCHAR null )
創建hbase中已存在表的視圖
CREATE VIEW "login_log" ( pk VARCHAR PRIMARY KEY,"login"."usr" VARCHAR, "login"."timestamp" VARCHAR, "login"."ip" VARCHAR, "login"."province" VARCHAR, "login"."city" VARCHAR, "login"."district" VARCHAR, "login"."success" VARCHAR, "login"."type" VARCHAR)DEFAULT_COLUMN_FAMILY='login';
注意:phoenix區分大小寫
"login_log" 用雙引號是因為hbase中表名為login_log,為小寫,雙引號使創建的視圖為小寫,與hbase表對應。
如此處不加雙引號,則創建的視圖為LOGIN_LOG
字段也如此。
4. SQuirreL
第一步: 下載安裝SQuirreL SQL Client : http://www.squirrelsql.org/
第二步: 拷貝phoenix-{version}-client.jar 和 phoenix-core-{version}.jar到SQuirreL 安裝目錄下的lib文件夾下,這兩個jar可以在phoenix的安裝目錄下找到。
第三步: 打開SQuirreL , 點擊Drivers,新建一個driver:
name : 可以自定義一個名稱
Example URL : 這個是為了讓你新建一個連接的時候作為提示用的
Java Class Path : 這個需要選中之前上傳的JAR
Class Name: org.apache.phoenix.jdbc.PhoenixDriver
第四步:創建Aliases(就是創建一個hbase的connection):
Name: 可以自定義
Driver: 選擇之前配置好的phoenix driver
URL: 這里初始化顯示的是之前配置的Example URL, 可以在這里做具體的修改,192.168.0.177修改為zk地址
配置好以后點擊Test,輸入服務器用戶名、密碼,測試連接,連接成功后進入如下頁面:
查詢已創建的視圖:
此處只有一級索引,在通過非rowkey進行查詢時查詢速度會比較慢,300W數據會在10s左右,目前的Phoenix已支持二級索引,通過二級索引進行查詢會實現毫秒級響應,下篇會介紹Phoenix二級索引的創建