Cloudera Impala:基于Hadoop的實時查詢開源項目
正在紐約進行的大數(shù)據(jù)技術會議Strata Conference + Hadoop World傳來消息,Cloudera發(fā)布了實時查詢開源項目Impala 1.0 beta版,稱比原來基于MapReduce的Hive SQL查詢速度提升3~90倍,而且更加靈活易用。Impala是高角羚的意思,這種羚羊主要分布在東非。
同時,這個項目也將以Cloudera Enterprise RTQ(Real-Time Query)為名進入CDH發(fā)行版??梢圆渴鸬缴a環(huán)境的版本將到2013年一季度就緒。不過,據(jù)ComputerWorld和MarketWatch的報道,Capgemini金融服務、Karmasphere、MicroStrategy、Pentaho、Qlikview和Tableau等已經在Impala上做了幾個月的實際產品測試。
眾所周知,Hadoop及HBase、HDFS其實是在Google的MapReduce、BigTable和GFS三篇論文的啟發(fā)下開發(fā)出來的。而近年來Google的基礎架構又有了一波新的革新,有媒體稱之為后Hadoop時代的三駕馬車Caffeine、Pregel和Dremel。當然,這種說法有混淆了輩份之嫌,而且并不十分科學。Pregel是圖數(shù)據(jù)庫,據(jù)說在MapReduce之外擔負了另外20%的數(shù)據(jù)處理任務,與三大論文之間沒有承繼關系。項目的創(chuàng)始人之一Grzegorz Malewicz去年來過北京,是Hadoop in China大會的主題演講嘉賓。今年加盟了Facebook。前幾天我在GTalk里詢問他的近況,他說正在開發(fā)Pregel的開源版本。其實某種程度上,Caffeine是MapReduce的演進,在今年OSDI上大火的Spanner可以視為BigTable的演進,而Dremel則是新出的。
無論如何,有了好東西,開源社區(qū)當然會很快跟進,仿照Dremel的Apache Drill項目已經進行一段時間了。而Cloudera在官方博客中也明確承認,“對每個Hadoop用戶都具有革命性的技術”Impala是在Dremel的啟發(fā)下開發(fā)的。也就是說,Impala不再使用緩慢的Hive+MapReduce批處理,而是通過與商用并行關系數(shù)據(jù)庫中類似的分布式查詢引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分組成),可以直接從HDFS或者HBase中用SELECT、JOIN和統(tǒng)計函數(shù)查詢數(shù)據(jù),從而大大降低了延遲。其架構如下圖所示。

Impala的架構
Impala采用與Hive相同的元數(shù)據(jù)、SQL語法、ODBC驅動程序和用戶接口(Hue Beeswax),這樣在使用CDH產品時,批處理和實時查詢的平臺是統(tǒng)一的。目前支持的文件格式是文本文件和SequenceFiles(可以壓縮為Snappy、GZIP和BZIP,前者性能最好)。其他格式如Avro, RCFile, LZO文本和Doug Cutting的Trevni將在正式版中支持。
博客同時還比較了Impala與Dremel。文中說:
Dremel之所以能在大數(shù)據(jù)上實現(xiàn)交互性的響應速度,是因為使用了兩方面的技術:一是對有嵌套結構的嵌套關系型數(shù)據(jù)采用了全新的列式存儲格式,一是分布式可擴展統(tǒng)計算法,能夠在幾千臺機器上并行計算查詢結果。
而后一技術是從并行關系型數(shù)據(jù)庫那里借鑒而來的。與2010年Dremel論文只能處理單表查詢相比,Impala已經能夠支持完整的JOIN操作。此外,除了Trevni列式存儲格式之外,Impala還支持廣泛的其他格式。也就是說:
Impala+Trevni已經完全實現(xiàn)了Dremel論文中的查詢性能,而且在SQL功能上還超過了它。
文章也強調Impala并不會取代傳統(tǒng)的數(shù)據(jù)倉庫和MapReduce+Hive。數(shù)據(jù)倉庫在對數(shù)量有限的結構化數(shù)據(jù)集做復雜的分析處理時仍然更加適用,而長期運行的數(shù)據(jù)轉換負載還是MapReduce的用武之地。
有意思的是,這篇官方博文的作者之一是Impala的架構師Marcel Kornacker,在加盟Cloudera之前,是Google F1項目查詢引擎的主開發(fā)人員,F(xiàn)1項目的任務,正是將AdWords的存儲從MySQL轉到Spanner。