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

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