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

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

Impala 1.0 vs. Hive:查詢響應時間(幾何平均數,按類別)
通過“比Hive快多少倍”的范圍表達上圖結果:

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

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