1 背景
最近涉及到的項(xiàng)目,同事在問hbase有沒有類似于mysql的客戶端携兵,像關(guān)系數(shù)據(jù)庫(kù)的語法操作在“NoSql“類型的庫(kù)上弄企。經(jīng)查詢資料遺憾的Hbase本身是暫不支持SQL查詢及二級(jí)索引的。
2聘萨、簡(jiǎn)介
Hbase本身不支持SQL 查詢彬坏,但還有它方式可以實(shí)現(xiàn)朦促,如Hive,Impala,Phoenix等,眾多方案各有優(yōu)勢(shì)栓始,本文我們就對(duì)Phoenixf進(jìn)行介紹
?? Apache Phoenix組件 官方注解為 “Phoenix -we put the SQL back in NoSql” 通過官方說明务冕,Phoenix 的性能很高,相對(duì)于 hbase 原生的scan 并不會(huì)差多少幻赚,而對(duì)于類似的組件 hive禀忆、Impala等臊旭,性能有著顯著的提升。
??官網(wǎng):https://phoenix.apache.org/performance.html
二箩退、安裝部署
??1)環(huán)境說明:
???? Master 10.209.10.206
?????? --Hmaster:active
???? Master 10.209.10.207
?????? --Hmbase:standby
????Slave? 10.209.10.208
?????? --Hregionservrer
???? Slave?10.209.10.210
?????? --Hregionservrer
?Slave?10.209.10.212
?? --Hregionservrer
2)測(cè)試中安裝的hadoop ,Hbase 均為CDH版本离熏,所以本次我們也安裝phoenix for cloudera版本
Hadoop 版本
Hbase 版本
由于phoenix for
CDH 版本沒有編譯好的可執(zhí)行文件,需要自己下載編譯
Github:https://github.com/chiastic-security/phoenix-for-cloudera/tree/4.6-HBase-1.0-cdh5.5
我們選擇是phoeix4.6-Hbase-1.0-cdh5.5的然后clone or download到本地戴涝。
我們選擇MVN進(jìn)行編譯:
編譯:
[if !supportLists]1>??[endif]解壓下載的source源代碼的壓縮文件滋戳。
[if !supportLists]2>??[endif]打開文件下的build.txt,根據(jù)里面的編譯步驟進(jìn)行編譯。
[if !supportLists]3>??[endif]本次編譯使用的mvn clean package -DskipTests (maven請(qǐng)自行安裝)
編譯后的文件啥刻,phoenix-for-cloudera-4.6-HBase-1.0-cdh5.5\phoenix-assembly\targt目錄下奸鸯。
上傳至后臺(tái)Hbase主機(jī)。
[if !supportLists]1>???????[endif]解壓縮后可帽,把phoenix-4.6.0-cdh5.5.1-server.jar包復(fù)制regionserver 主機(jī).
[if !supportLists]2>??[endif]重啟Hbase
[if !supportLists]3>??[endif]測(cè)試是否可以正常連接府喳,通過bin/sqlline.py進(jìn)行連接sqlline.py后臺(tái)的地址是zookeeper的地址及端口。
可以通過select 進(jìn)行查詢了(注意:表名要加“” 因?yàn)镠base區(qū)分大小寫蘑拯,會(huì)把小寫自動(dòng)轉(zhuǎn)為大字字母。)
說明此時(shí)連接上了兜粘。
Squirrel配置:
??Squirrel是一個(gè)界面化連接Hbase的一個(gè)工具申窘。
[if !supportLists]1)????[endif]下載Squirrel
官網(wǎng)地址:http://www.squirrelsql.org/
本次下載了最新的version 3.8.1。
??2)下載到本地為一個(gè)jar包孔轴,雙擊執(zhí)行
根據(jù)安裝界面提示進(jìn)行下一步安裝剃法。
3)安裝完squirrel后進(jìn)行配置,把Phoenix目錄下幾個(gè)包要復(fù)制到squirrel/lib目錄下路鹰。
??phoenix-4.6.0-cdh5.5.1-client.jar
??phoenix-4.6.0-cdh5.5.1-client-minimal.jar
??phoenix-core-4.6.0-cdh5.5.1.jar
phoenix-server-4.6.0-cdh5.5.1.jar
phoenix-server-client-4.6.0-cdh5.5.1.jar
phoenix-4.6.0-cdh5.5.1-server.jar
4)啟動(dòng)quirrel 雙擊squirrel-sql.bat
5)在啟動(dòng)成功后的界面中單南Drivers
Name:隨便寫我們這個(gè)為phoenix
Example URL:連接的驅(qū)動(dòng)類型及地址:jdbc:phoenix:10.209.10.212:11001
Java class path:我們選擇:phoenix-4.6.0-cdh5.5.1-server.jar
Class name:org.apache.phoenix.jdbc.PhoenixDriver
完畢贷洲,點(diǎn)擊OK進(jìn)行保存。
6)連接創(chuàng)建:連接Phoenix
?? 點(diǎn)擊Aliases晋柱,單擊+號(hào)[
Name:隨便寫优构,我們這兒寫hbase
Driver:選擇我們剛創(chuàng)建的phoenix
User name:為登錄主機(jī)的用戶名
Passworkd:登錄主機(jī)密碼
可以勾選Auto logon 進(jìn)行自動(dòng)登錄。
登錄成功的界面雁竞。
在SQL窗口可進(jìn)行select 語句的編寫,如下圖钦椭。
注:
在后臺(tái)Hhbase shell中創(chuàng)建的表,在前臺(tái)通過squirrel連接phoenix這種 方式是看不到的碑诉。
需要進(jìn)行映射彪腔。
在squirrel中創(chuàng)建同名同結(jié)構(gòu)的表即可,數(shù)據(jù)會(huì)自動(dòng)關(guān)聯(lián)映射进栽。