Cloudera Impala:基於Hadoop的實時查詢開源項目

正在紐約進行的大數據技術會議Strata Conference + Hadoop World傳來消息,Cloudera發佈了實時查詢開源項目Impala 1.0 beta版,稱比原來基於MapReduce的Hive SQL查詢速度提高3~90倍(詳情能夠參考此文中的「How much faster are Impala queries than Hive ones, really?」部分),並且更加靈活易用。Impala是高角羚的意思,這種羚羊主要分佈在東非。 html

同時,這個項目也將以Cloudera Enterprise RTQ(Real-Time Query)爲名進入CDH發行版。能夠部署到生產環境的版本將到2013年一季度就緒。不過,據ComputerWorldMarketWatch的報道,Capgemini金融服務、Karmasphere、MicroStrategy、Pentaho、Qlikview和Tableau等已經在Impala上作了幾個月的實際產品測試。 git

衆所周知,Hadoop及HBase、HDFS實際上是在Google的MapReduce、BigTable和GFS三篇論文的啓發下開發出來的。而近年來Google的基礎架構又有了一波新的革新,有媒體稱之爲後Hadoop時代的三駕馬車Caffeine、Pregel和Dremel。固然,這種說法有混淆了輩份之嫌,並且並不十分科學。Pregel是圖數據庫,聽說在MapReduce以外擔負了另外20%的數據處理任務,與三大論文之間沒有承繼關係。項目的創始人之一Grzegorz Malewicz去年來過北京,是Hadoop in China大會的主題演講嘉賓。今年加盟了Facebook。前幾天我在GTalk裏詢問他的近況,他說正在開發Pregel的開源版本。其實某種程度上,Caffeine是MapReduce的演進,在今年OSDI上大火的Spanner能夠視爲BigTable的演進,而Dremel則是新出的。 github

不管如何,有了好東西,開源社區固然會很快跟進,仿照Dremel的Apache Drill項目已經進行一段時間了。而Cloudera在官方博客中也明確認可,「對每一個Hadoop用戶都具備革命性的技術」Impala是在Dremel的啓發下開發的。也就是說,Impala再也不使用緩慢的Hive+MapReduce批處理,而是經過與商用並行關係數據庫中相似的分佈式查詢引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分組成),能夠直接從HDFS或者HBase中用SELECT、JOIN和統計函數查詢數據,從而大大下降了延遲。其架構以下圖所示。 算法

Impala的架構

Impala的架構(來自ZDNet 數據庫

Impala採用與Hive相同的元數據、SQL語法、ODBC驅動程序和用戶接口(Hue Beeswax),這樣在使用CDH產品時,批處理和實時查詢的平臺是統一的。目前支持的文件格式是文本文件和SequenceFiles(能夠壓縮爲Snappy、GZIP和BZIP,前者性能最好)。其餘格式如Avro, RCFile, LZO文本和Doug Cutting的Trevni將在正式版中支持。 apache

博客同時還比較了Impala與Dremel。文中說:  架構

Dremel之因此能在大數據上實現交互性的響應速度,是由於使用了兩方面的技術:一是對有嵌套結構的嵌套關係型數據採用了全新的列式存儲格式,一是分佈式可擴展統計算法,可以在幾千臺機器上並行計算查詢結果。  app

然後一技術是從並行關係型數據庫那裏借鑑而來的。與2010年Dremel論文只能處理單表查詢相比,Impala已經可以支持完整的JOIN操做。此外,除了Trevni列式存儲格式以外,Impala還支持普遍的其餘格式。也就是說:   分佈式

Impala+Trevni已經徹底實現了Dremel論文中的查詢性能,並且在SQL功能上還超過了它。  函數

文章也強調Impala並不會取代傳統的數據倉庫和MapReduce+Hive。數據倉庫在對數量有限的結構化數據集作複雜的分析處理時仍然更加適用,而長期運行的數據轉換負載仍是MapReduce的用武之地。

有意思的是,這篇官方博文的做者之一是Impala的架構師Marcel Kornacker,在加盟Cloudera以前,是Google F1項目查詢引擎的主開發人員,F1項目的任務,正是將AdWords的存儲從MySQL轉到Spanner

Impala的主要資源

相關文章
相關標籤/搜索