天天看點

對比使用Phoenix元件和原生Hbase查詢的時間性能

    之前對于使用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。