之前對于使用Phoenix查詢Hbase大表資料一直卡死,于是擱置了好久,昨晚終于嘗試了一下,完美搞定,本節文章來使用4種方法對比Hbase查詢性能。
查詢資料量為1.8億+。
1.基本理論
HBase是一個分布式的基于列存儲的非關系型資料庫。
HBase不是關系型資料庫,而是一個在hdfs上開發的面向列的分布式資料庫,不支援sql。
HBase統計使用count。查詢按照rowkey查詢,适合存儲結果,不适合做sum、count、表連接配接等複雜查詢,而SQL則适合多表連接配接,查詢組合等。
現有工具有很多Hive,Tez,Impala,Shark/Spark,Phoenix等。今天主要記錄Phoenix。
phoenix,由saleforce.com開源的一個項目,後又捐給了Apache。它相當于一個Java中間件,幫助開發者,像使用jdbc通路關系型資料庫一些,通路NoSql資料庫HBase。
phoenix,操作的表及資料,存儲在hbase上。phoenix隻是需要和Hbase進行表關聯起來。然後再用工具進行一些讀或寫操作。
其實,可以把Phoenix隻看成一種代替HBase的文法的一個工具。
2.查詢方式
第一種:原生Hbase查詢時間
Hbase查詢時間為3856秒大約1小時7分鐘
第二種:Hbase查詢優化
每隔一千萬查詢一次:
間隔查詢3372.5740秒,大約耗時:56分鐘。
第三種:協處理器
首先需要配置:hbase-site.xml
耗時:1874188毫秒=1874.188s秒,大約31分鐘。
第四種:Phoenix查詢時間
需要設定Phoenix中的hbase-site.xml時間配置:
Phoenix查詢時間為2015.033秒,大約33分鐘左右。
3.總結
綜上可得出,速度快慢:協處理器>Phoenix查詢>間隔count>普通count>全表scan。