大資料的實時查詢

小弟季義欽發表於2014-05-28

最近出現了一個很火的詞,叫做流式計算,可以做很高的實時處理,比如Twitter的Storm,它的特點是不處理靜態資料,而是處理會連續產生的流式資料,而Hadoop專注於批處理,因為Hadoop為批處理作了高度優化,MapReduce系統典型地通過排程批量任務來操作靜態資料;而流式計算的典型正規化之一是不確定資料速率的事件流流入系統,系統處理能力必須與事件流量匹配,或者通過近似演算法等方法優雅降級,通常稱為負載分流(load-shedding)。

所以兩者應用場景還是不同的。


最近比較關心一個問題,就是大資料的實時查詢。一般如何實現呢,簡單瞭解了一下,大概有幾種方式吧:

(1)HBase+Solr:比如某電信專案中採用HBase來儲存使用者終端明細資料,供前臺頁面即時查詢。HBase無可置疑擁有其優勢,但其本身只對rowkey支援毫秒級的快速檢索,對於多欄位的組合查詢卻無能為力。針對HBase的多條件查詢也有多種方案,但是這些方案要麼太複雜,要麼效率太低,基於Solr的HBase多條件查詢原理很簡單,將HBase表中涉及條件過濾的欄位和rowkey在Solr中建立索引,通過Solr的多條件查詢快速獲得符合過濾條件的rowkey值,拿到這些rowkey之後在HBASE中通過指定rowkey進行查詢。

(2)Impala:Hadoop的新成員,是Cloudera公司主導開發的新型查詢系統,它提供SQL語義,能查詢儲存在Hadoop的HDFS和HBase中的PB級大資料。已有的Hive系統雖然也提供了SQL語義,但由於Hive底層執行使用的是MapReduce引擎,仍然是一個批處理過程,難以滿足查詢的互動性。相比之下,Impala的最大特點也是最大賣點就是它的快速。


還需要進一步的調研。

相關文章