寫在前面一:
本文總結基于HBase的SQL查詢系統——Salesforce phoenix
寫在前面二:
環境說明:
一、什麼是Phoenix
摘自官網:
Phoenix是一個提供hbase的sql操作的架構,Phoenix是建構在HBase之上的一個SQL中間層。
Phoenix全然使用Java編寫,代碼位于GitHub上,而且提供了一個client可嵌入的JDBC驅動。對于簡單的低延遲查詢,其性能量級為毫秒。對于百萬級别的行數來說,其性能量級為秒。Phoenix并非像HBase那樣
用于map-reduce job的,而是通過标準化的語言來訪問HBase資料的。
Phoenix最值得關注的特性:
1、嵌入式的JDBC驅動,實作了大部分的java.sql接口。包含中繼資料API
2、能夠通過多部行鍵或是鍵/值單元對列進行模組化
3、完好的查詢支援,能夠使用多個謂詞以及優化的掃描鍵
4、DDL支援:通過CREATE TABLE、DROP TABLE及ALTER TABLE來加入/删除列
5、版本号化的模式倉庫:當寫入資料時,快照查詢會使用恰當的模式
6、DML支援:用于逐行插入的UPSERT VALUES、用于同樣或不同表之間大量傳輸資料的UPSERT SELECT、用于删除行的DELETE
7、通過client的批處理實作的有限的事務支援
8、單表——還沒有連接配接,同一時候二級索引也在開發其中
9、緊跟ANSI SQL标準
二、Phoenix原理
Phoenix基本原理是将一個對于HBase client來說比較複雜的查詢轉換成一系列Region Scan,結合coprocessor和custom filter在多台Region Server上進行并行查詢。彙總各個Scan結果。
種種迹象表明。Phoenix應該不是個優化的OLAP系統,更像是一個用于簡單單表查詢,過濾。排序,檢索的OLTP系統。 Phoenix 能夠為我們眼下大資料平台提供比較便捷的資料操作能力(直接用jdbc方式),性能比較不錯。注意不要使用多表查詢就可以 。
三、Phoenix安裝配置
1、下載下傳
phoenix-3.0.0-incubating.tar.gz
http://phoenix.incubator.apache.org/download.html#Installation
2、拷貝phoenix-3.0.0-incubating/common/phoenix-core-3.0.0-incubating.jar至$HBASE_HOME/lib/下
3、重新啟動HBase叢集
若通過client訪問phoenix,需進行下面操作:
把phoenix-3.0.0-incubating/hadoop-1/phoenix-3.0.0-incubating-client.jar加入到Phoenix用戶端的類路徑下
四、訪問Phoenix
4.1、通過指令行
進入phoenix
cd /home/yujianxin/hbase/phoenix/phoenix-3.0.0-incubating/bin
./sqlline.py slave3:2181
出現下面響應,說明成功安裝
4.2、通過Java
4.3、通過SQLclientSQuirrel訪問
下載下傳位址:http://squirrel-sql.sourceforge.net/
再進行安裝配置就可以。
五、使用Phoenix
使用phoenix-3.0.0-incubating.tar.gz自帶的資料進行測試
當中。WEB_STAT.sql的内容例如以下:
運作以上指令後,檢視phoenix中的表:
Phoenix支援模糊查詢:
檢視HBase中的表,例如以下:
就可以通過Phoenix這個建構在HBase之上的SQL中間層,向HBase發送标準sql語句。對HBase進行操作。