Cloudera釋放Impala 1.0:與Hadoop完全整合,各方面完爆Hive
在去年認(rèn)識(shí)了Impala這只高腳羚——其主要分布在東非,在Dremel的啟發(fā)下開(kāi)發(fā)。文章中還指出Impala不再使用緩慢的Hive+MapReduce批處理,而是通過(guò)與商用并行關(guān)系數(shù)據(jù)庫(kù)中類似的分布式查詢引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分組成),可以直接從HDFS或者HBase中用SELECT、JOIN和統(tǒng)計(jì)函數(shù)查詢數(shù)據(jù),從而大大降低了延遲。其架構(gòu)如下圖所示:

5月1日,Cloudera釋放了Impala 1.0版本(下載傳送門);對(duì)比舊版本,新的版本基于社區(qū)回饋和現(xiàn)實(shí)世界中不同的負(fù)載做出了修改,其根本的設(shè)計(jì)理念是與Hadoop無(wú)縫的整合——共同使用一個(gè)存儲(chǔ)池、元數(shù)據(jù)模型、安全框架以及系統(tǒng)資源集。這種整合允許Impala用戶從成本、靈活性、以及Hadoop交互式SQL查詢中獲利,并且能讓Hadoop用戶在MapReduce和其它的框架上做更好的SQL查詢。最終達(dá)到所有的數(shù)據(jù)都可以做交互式分析以及做其它類型的處理,免去了ETL過(guò)程。進(jìn)化后的高腳羚究竟如何,必須牽出來(lái)溜溜:
Impala 1.0中的特性
Impala 1.0的特性詳情可以參考此文檔,在這里先看一下摘要。為了集合上述特性,他們完成了所有Hadoop上實(shí)現(xiàn)SQL的事項(xiàng):用以避免網(wǎng)絡(luò)瓶頸的本地處理、交互式響應(yīng)、本地?cái)?shù)據(jù)的單儲(chǔ)存池以及可同時(shí)對(duì)相同數(shù)據(jù)做不同類型的處理:
支持ANSI-92 SQL所有子集,包括CREATE, ALTER, SELECT, INSERT, JOIN和 subqueries
支持分區(qū)join、完全分布式聚合以及完全分布式top-n查詢
支持多種數(shù)據(jù)格式:Hadoop原生格式(pache Avro, SequenceFile, RCFile with Snappy, GZIP, BZIP或未壓縮)、文本(未壓縮或者LZO壓縮)和Parquet(Snappy或未壓縮)——最新及最先進(jìn)的列式存儲(chǔ)
支持所有CDH4 64位包:Ubuntu、Debian、LES
可以通過(guò)JDBC、ODBC、Hue GUI或者命令行shell進(jìn)行連接
Kerberos認(rèn)證及MR/Impala資源隔離
Impala當(dāng)下的性能
對(duì)比測(cè)試版,Impala新版本的性能提升很大。為了更加的客觀,Cloudera在公布基準(zhǔn)數(shù)字之前,先對(duì)測(cè)試如何迎合現(xiàn)實(shí)中的用例做出了解釋:
因?yàn)樽鯞I和分析涉及允許一組不同的查詢集合去生成報(bào)告,而Cloudera此次性能測(cè)試的重點(diǎn)就是使用多個(gè)現(xiàn)實(shí)世界中用戶針對(duì)原生Hadoop格式文件的查詢——而不是針對(duì)預(yù)加載專業(yè)文件格式的擇優(yōu)選取(擇優(yōu)選取在項(xiàng)目宣傳中還是比較常見(jiàn)的)。此外,為了測(cè)試平臺(tái)的全局性能,在測(cè)試單機(jī)性能的同時(shí),還測(cè)試了多租戶情景下Impala查詢及其它并行處理作業(yè)的性能。最終測(cè)試的制定通過(guò)與用戶和社區(qū)的共同努力完成,Cloudera該測(cè)試基準(zhǔn)無(wú)與倫比,并得到了很有意義的結(jié)果(事實(shí)上,這些結(jié)果可能會(huì)產(chǎn)生誤解)。
測(cè)試中其它一些重要的事項(xiàng):
在單用戶Impala與Hive/MapReduce的對(duì)比中,兩方面的查詢都運(yùn)行在HDFS文件系統(tǒng)中Snappy-compressed SequenceFile文件上。
表格中包含了5年內(nèi)總計(jì)1TB的數(shù)據(jù)。
查詢分布在不同的時(shí)間段(1個(gè)月到5年)以及不同數(shù)量延時(shí)(分別是Interactive Exploration、Reports和Deep Analytics buckets)上。
查詢涉及到多種級(jí)別的join(數(shù)量上從1到7)和聚合,同時(shí)還包含了復(fù)雜的多層次聚合和內(nèi)聯(lián)視圖。
定期運(yùn)行在多種本地文件格式的查詢集來(lái)自幾個(gè)客戶中的一個(gè)。
下面是幾秒內(nèi)一個(gè)20節(jié)點(diǎn)集群?jiǎn)螜C(jī)上的結(jié)果,按照類型劃分buckets,并計(jì)算出這些buckets上的幾何平均數(shù)(這種情況下幾何平均數(shù)一直優(yōu)于算數(shù)平均值,因?yàn)槊總€(gè)查詢的響應(yīng)時(shí)間都可能不同):

Impala 1.0 vs. Hive:查詢響應(yīng)時(shí)間(幾何平均數(shù),按類別)
通過(guò)“比Hive快多少倍”的范圍表達(dá)上圖結(jié)果:

下圖顯示在加入更多并行客戶端后,Impala將達(dá)到超線性標(biāo)度的提升:

上述圖片顯示隨著并行客戶端數(shù)量的增加,查詢響應(yīng)時(shí)間甚至飆升到之前的24倍。然而即使這樣,Impala 1.0性能仍然高于單機(jī)Hive!(需要注意的是,并行是非常重要的一點(diǎn),Cloudera聲明將來(lái)會(huì)做更深度的基準(zhǔn)測(cè)試)
以上的結(jié)果顯示,區(qū)別于Hive,Impala 1.0適合現(xiàn)代的BI環(huán)境(在這種環(huán)境下,用戶將并行的運(yùn)行不同的查詢類型)——Impala中,性能會(huì)隨著你添加節(jié)點(diǎn)得到類似的提升。
Impala未來(lái)的工作
雖然Impala的性能已經(jīng)相當(dāng)出眾,但是Cloudera認(rèn)為在下兩個(gè)版本中完全實(shí)現(xiàn)Parquet和多線程執(zhí)行后,Impala性能將再次得到跨越性提升。
在Impala 1.0中,Cloudera已針對(duì)BI和分析查詢對(duì)MapReduce/Hive性能做了大幅度改善,實(shí)現(xiàn)了BI在Hadoop上的可行。而借助與Hadoop的完全整合,Impala靈活性同樣得以保證,同時(shí)還具備了遠(yuǎn)程查詢上的TCO優(yōu)勢(shì)以及DBMS/Hadoop混合優(yōu)勢(shì)——省下了昂貴的冗余設(shè)施。
在釋放了Impala 1.0之后,Cloudera將最終目標(biāo)定義為:允許用戶將所有數(shù)據(jù)存儲(chǔ)在通一個(gè)靈活、開(kāi)放以及原生的Hadoop文件格式,并且可以同時(shí)在同一個(gè)數(shù)據(jù)上運(yùn)行他們所有的批處理MapReduce、機(jī)器學(xué)習(xí)、交互式SQL/BI、數(shù)學(xué)以及其它作業(yè)。