寫在前面一:
本文總結(jié)基于HBase的SQL查詢系統(tǒng)——Salesforce?phoenix
寫在前面二:
環(huán)境說(shuō)明:
一、什么是Phoenix
摘自官網(wǎng):
Phoenix是一個(gè)提供hbase的sql操作的框架,Phoenix是構(gòu)建在HBase之上的一個(gè)SQL中間層。
Phoenix全然使用Java編寫,代碼位于GitHub上,而且提供了一個(gè)client可嵌入的JDBC驅(qū)動(dòng)。對(duì)于簡(jiǎn)單的低延遲查詢,其性能量級(jí)為毫秒。對(duì)于百萬(wàn)級(jí)別的行數(shù)來(lái)說(shuō),其性能量級(jí)為秒。Phoenix并非像HBase那樣
用于map-reduce job的,而是通過(guò)標(biāo)準(zhǔn)化的語(yǔ)言來(lái)訪問(wèn)HBase數(shù)據(jù)的。
Phoenix最值得關(guān)注的特性:
1、嵌入式的JDBC驅(qū)動(dòng),實(shí)現(xiàn)了大部分的java.sql接口。包含元數(shù)據(jù)API
2、能夠通過(guò)多部行鍵或是鍵/值單元對(duì)列進(jìn)行建模
3、完好的查詢支持,能夠使用多個(gè)謂詞以及優(yōu)化的掃描鍵
4、DDL支持:通過(guò)CREATE TABLE、DROP TABLE及ALTER TABLE來(lái)加入/刪除列
5、版本號(hào)化的模式倉(cāng)庫(kù):當(dāng)寫入數(shù)據(jù)時(shí),快照查詢會(huì)使用恰當(dāng)?shù)哪J?br/>6、DML支持:用于逐行插入的UPSERT VALUES、用于同樣或不同表之間大量傳輸數(shù)據(jù)的UPSERT SELECT、用于刪除行的DELETE
7、通過(guò)client的批處理實(shí)現(xiàn)的有限的事務(wù)支持
8、單表——還沒有連接,同一時(shí)候二級(jí)索引也在開發(fā)其中
9、緊跟ANSI SQL標(biāo)準(zhǔn)
二、Phoenix原理
Phoenix基本原理是將一個(gè)對(duì)于HBase client來(lái)說(shuō)比較復(fù)雜的查詢轉(zhuǎn)換成一系列Region Scan,結(jié)合coprocessor和custom ?filter在多臺(tái)Region Server上進(jìn)行并行查詢。匯總各個(gè)Scan結(jié)果。
種種跡象表明。Phoenix應(yīng)該不是個(gè)優(yōu)化的OLAP系統(tǒng),更像是一個(gè)用于簡(jiǎn)單單表查詢,過(guò)濾。排序,檢索的OLTP系統(tǒng)。 Phoenix 能夠?yàn)槲覀冄巯麓髷?shù)據(jù)平臺(tái)提供比較便捷的數(shù)據(jù)操作能力(直接用jdbc方式),性能比較不錯(cuò)。注意不要使用多表查詢就可以 。
?
三、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、重新啟動(dòng)HBase集群
若通過(guò)client訪問(wèn)phoenix,需進(jìn)行下面操作:
把phoenix-3.0.0-incubating/hadoop-1/phoenix-3.0.0-incubating-client.jar加入到Phoenix客戶端的類路徑下
四、訪問(wèn)Phoenix
4.1、通過(guò)命令行
進(jìn)入phoenix
cd?/home/yujianxin/hbase/phoenix/phoenix-3.0.0-incubating/bin
./sqlline.py slave3:2181
出現(xiàn)下面響應(yīng),說(shuō)明成功安裝
4.2、通過(guò)Java
?
<span style="font-family:Times New Roman;">Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
// connection string: jdbc:phoenix [ :<zookeeper quorum> [ :<port number> ] [ :<root node> ] ]
Connection connection = DriverManager.getConnection("jdbc:phoenix:slave3:2181");</span>
4.3、通過(guò)SQLclientSQuirrel訪問(wèn)
下載地址:http://squirrel-sql.sourceforge.net/
再進(jìn)行安裝配置就可以。
五、使用Phoenix
?
使用phoenix-3.0.0-incubating.tar.gz自帶的數(shù)據(jù)進(jìn)行測(cè)試
當(dāng)中。WEB_STAT.sql的內(nèi)容例如以下:
運(yùn)行以上命令后,查看phoenix中的表:
Phoenix支持模糊查詢:
查看HBase中的表,例如以下:
就可以通過(guò)Phoenix這個(gè)構(gòu)建在HBase之上的SQL中間層,向HBase發(fā)送標(biāo)準(zhǔn)sql語(yǔ)句。對(duì)HBase進(jìn)行操作。
?
本文摘自 :https://blog.51cto.com/u