CDH叢集安裝Phoenix服務
背景:
之前我們都是通過原生的 hbase-java api根據業務需求來查詢hbase,每有一個查詢需求都需要定製化開發相關的查詢程式碼,較為麻煩,而且在效能優化等方面優化也是需要著重注意;
目前業界使用 Phoenix操作HBase比較普遍,該方案無論是開發效率還是效能提升都能得到不錯的保證,在這篇部落格中記錄下CDH叢集如何安裝Phoenix服務~
叢集資訊:
版本:CDH 5.13.0
四臺機器:cdh1 - cdh4
一、基本介紹
Phoenix是一個開源的HBASE SQL層。它不僅可以使用標準的JDBC API替代HBASE client API建立表,插入和查詢HBASE,也支援二級索引、事務以及多種SQL層優化。
Phoenix通過以下方式實現了比你自己手寫的方式相同或者可能是更好的效能(更不用說可以少寫了很多程式碼):
* 編譯你的SQL查詢為原生HBase的scan語句
* 檢測scan語句最佳的開始和結束的key
* 精心編排你的scan語句讓他們並行執行
* 讓計算去接近資料通過
* 推送你的WHERE子句的謂詞到服務端過濾器處理
* 執行聚合查詢通過服務端鉤子(稱為協同處理器)
除此之外,還做了一些有趣的增強功能來更多地優化效能:
* 實現了二級索引來提升非主鍵欄位查詢的效能
* 統計相關資料來提高並行化水平,並幫助選擇最佳優化方案
* 跳過掃描過濾器來優化IN,LIKE,OR查詢
* 優化主鍵的鹽值來均勻分佈寫壓力
二、安裝步驟
1.下載
下載地址:http://archive.cloudera.com/cloudera-labs/phoenix/parcels/latest/
我們根據自己作業系統選擇版本,我的是CentOS 7.5,故選擇el7
下載這三個檔案:*.parcel、*.parcel.sha1、manifest.json
2.檔案上傳伺服器指定目錄
在叢集master節點上找到cdh的主目錄,將三個檔案放置在parcel包的目錄,我的目錄是/home/cdh/cloudera/parcel-repo
不知道自己parcel目錄的可以去cm介面檢視:
檢視parcel設定:
在該目錄下將老的 manifest.json 改名備份,然後將三個檔案移動進來,再將.sha1字尾的檔案改為.sha字尾!
3.CM-UI介面安裝該Parcel
檢查後會發現CLABS_PHOENIX的parcel出現,然後分配、啟用:
然後重啟HBase服務更新配置即可!
三、測試Phoenix功能
在伺服器shell命令列輸入:
tab phoenix字首可以看到如下幾個py字尾的命令:(說明phoenix服務已安裝且將命令新增到環境變數)
啟動phoenix-sql命令列:
phoenix-sqlline.py cdh1:2181
1
其中cdh1:2181是zookeeper主機名埠,如果上面執行報錯,可以試試這個:
phoenix-sqlline.py cdh1:2181:/hbase
1
輸入!table查看錶資訊:
發現一開始就存在4個系統表,在hue檢視也如此:
建立測試表 test_phoenix:
create table test_phoenix (id integer not null primary key, cf.name varchar, age integer);
1
注意: 除了加感嘆號的命令外,sql語句必須加分號結尾!
查看錶結構:
!describe test_phoenix
1
可以看到上面建表語句所建立的表名和欄位都是大寫!要想改為小寫,建表語句中就必須將其用雙引號括起來!查詢時也要加雙引號!