607java
舒適提示:要看高清無碼套圖,請使用手機打開並單擊圖片放大查看。sql
1.導讀數據庫
Cloudera Labs在2016-06-27宣佈打包了Apache Phoenix項目,版本爲4.7.0,並基於CDH5.7.0。安裝依舊是你們熟悉的Parcel方式,下載地址爲:http://archive.cloudera.com/cloudera-labs/phoenix/parcels/1.3/apache
Fayson這兩天親測了一下,CDH5.12.1也能勉強一用,想知道具體該怎樣安裝和使用,歡迎關注本公衆號明天的文章。性能優化
Cloudera Labs說白了就是有羣人在「實驗室」會研究或者玩玩一些有趣的好比其餘Apache的項目,雖然會偶爾打包一些項目,可是官方是不Support的。另外Cloudera Labs也不會保證從舊的Phoenix版本升級到4.7的兼容性。dom
2.概述分佈式
ApachePhoenix是Apache HBase上一個高效的SQL引擎,也挺火的。不少公司都在使用它,好比Salesforce,它開源了這個項目,並將該項目貢獻到社區。如今也已是頂級項目了。工具
ClouderaLabs在2015-05-06宣佈打包Phoenix並集成到CDH平臺,本文主要爲了描述這幾個問題:Phoenix能夠作什麼?爲何你們想要使用它?和已有的SQL工具相好比何?它的一些優點能夠取代現有的一些工具嗎?oop
固然咱們首先會先介紹一下Phoenix以及它的一些獨特的特性,另外會給出一些它的使用場景以及和其它SQL工具的對比。
3.Apache Phoenix是什麼
首先Phoenix是HBase之上的SQL工具,至於HBase是什麼,我就不介紹了,你若不懂,就不須要往下繼續看了。Phoenix旨在經過標準的SQL語法來簡化HBase的使用,並可使用標準的JDBC鏈接HBase,而不是經過HBase的Java客戶端APIs。它可讓你執行全部的CRUD和DDL操做,好比建立一張表,插入數據以及查詢數據。SQL和JDBC能夠大大減小用戶代碼的開發,固然它也提供一些性能優化的手段,經過SQL和JDBC,你能夠更方便的將HBase集成到你現有的系統或者工具。
當Phoenix接收到SQL查詢後,它會在本地編譯成HBase的API,而後推到集羣進行分佈式的查詢或計算。它自動建立了一個元數據庫用來存儲HBase的表的元數據信息。由於Phoenix是直接調用的HBase的API,coprocessors和自定義的filters,因此對於大量小查詢能夠實現毫秒級返回,千萬級別的數據實現秒級返回。
4.使用場景
Phoenix很是適合HBase的隨機訪問,它的二級索引特性同時可讓你實現非主鍵查詢的快速返回,而不須要進行全表掃描。它可讓你像傳統數據庫表的方式建立和管理HBase中的表,同時Phoenix也支持複合主鍵。
Phoenix能夠給Rowkey加鹽,從而避免由於簡單遞增的Rowkey引發的RegionServer熱點問題。經過指定不一樣的租戶鏈接實現數據訪問的隔離,從而實現多租戶,租戶只能訪問屬於他的數據。
雖然Phoenix有這麼多優點,可是它依舊沒法替代RDBMS。好比它還有如下限制:
5.與Hive/Impala的比較
Hive/Impala也能夠做爲HBase之上的SQL工具。包括Phoenix這3個工具在不少功能上都有一些重疊,好比它們都提供SQL執行以及JDBC驅動
不像Impala和Hive,Phoenix與HBase結合更加緊密,從而能夠更好的利用HBase的一些特性,好比coprocessors和skip scans。
如下是比較:
|
Apache Phoenix |
Impala |
Hive |
---|---|---|---|
語法 |
SQL |
SQL |
HiveQL |
定位 |
爲低延時應用在HBase之上提供高效的SQL查詢 |
大數據集之上的交互式探索分析 |
批處理好比ETL |
二級索引 |
Yes(沒法保證ACID) |
No |
No |
額外的服務 |
No |
Yes |
Yes |
HBase的高級特性 |
Yes |
No |
No |
6.安裝
若是須要安裝Phoenix,至少須要HBase1.0,從CDH5.4之後開始打包HBase1.0。
1.下載Phoenix的Parcel:http://archive.cloudera.com/cloudera-labs/phoenix/
2.經過Cloudera Manager安裝Parcel,首先在Cloudera Manager裏配置一個新的Parcel倉庫地址,而後下載,分發,激活。
3.若是你想要使用HBase的二級索引功能,在重啓HBase服務以前,須要在hbase-site.xml中添加如下內容:
<property> <name>hbase.regionserver.wal.codec</name> <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value> </property>
4.在激活Phoenix的Parcel包以後,請確認已經重啓了HBase的服務。
7.Phoenix的命令行工具
Phoenix的命令行工具在/usr/bin目錄下,在使用Phoenix的命令行工具以前,須要配置Java的環境變量。
export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera export PATH=$PATH:$JAVA_HOME/bin
8.接下來的工做
Phoenix項目正在調研使用Tephra(來自CASK)來作事務管理,PHOENIX-400。同時也在考慮集成Cost-based的查詢優化,PHOENIX-1177。雖然Phoenix支持tracing,http://phoenix.apache.org/tracing.html,但監控和管理工做還有待優化和完善。
9.總結
Phoenix簡化了HBase不少場景的使用方式。與Cloudera Labs中的其餘工具同樣,Cloudera官方不會提供Support,僅供實驗使用。若是有任何反饋意見,能夠在Cloudera Labs的社區與Cloudera進行反饋和互動。https://community.cloudera.com/t5/Cloudera-Labs/bd-p/ClouderaLabs
10.參考網址
https://blog.cloudera.com/blog/2015/05/apache-phoenix-joins-cloudera-labs/
https://blog.cloudera.com/blog/2015/11/new-apache-phoenix-4-5-2-package-from-cloudera-labs/
https://www.cloudera.com/developers/cloudera-labs.html
https://community.cloudera.com/t5/Cloudera-Labs/bd-p/ClouderaLabs