Apache Impala引領傳統分析數據庫技術的發展

SQL Presto Apache 雲計算 36大數據 2017-05-16

Apache Impala引領傳統分析數據庫技術的發展

作者:Greg Rahn和Mostafa Mokhtar

與傳統的分析數據庫(Greenplum)相比,未經修改的基於TPC-DS的性能基準測試表現出了Impala的領導地位,特別是對於多用戶併發工作負載而言。此外,基準測試還進一步證明了分析數據庫與Hive LLAP、Spark SQL和Presto等SQL-on-Hadoop引擎之間存在的顯著性能差距。

過去一年是Apache Impala(正在孵化中)發展變化最大的一年。Impala團隊不僅繼續努力不斷擴大其規模和穩定性,而且還推出了一系列的關鍵功能,進一步鞏固了Impala作為高性能商務智能(BI)和SQL分析的開放標準地位。對於雲計算和混合部署而言,Impala現在可以提供雲端-本地部署彈性、靈活性,以及直接從Amazon S3對象存儲中(以及為未來一年制定的其他對象存儲)讀取/寫入的能力。隨著Apache Kudu的GA,用戶現在可以使用Impala對接收到或更新的數據立即進行高性能分析。另外,也很容易將現有的商務智能(BI)工作負載從傳統分析數據庫或數據倉庫遷移至由Impala構建的Cloudera分析數據庫中,同時可以使用Navigator Optimizer優化其性能。而且如同以往一樣,對於更大的併發性工作負載的性能改進仍然是全年工作的重中之重。

除了這些性能改進之外,隨著越來越多的企業機構(例如紐約證券交易所(NYSE)和奎斯特診斷公司(Quest Diagnostics))已經注意到Cloudera現代分析數據庫(而不是傳統分析數據庫)的靈活性、可擴展性和支持SQL及非SQL工作負載(例如數據科學、機器學習和操作性工作負載)的開放式架構,Impala的採用率也在不斷增長。

對於該基準測試而言,我們使用未經修改的多用戶TPC-DS查詢對具有Impala的Cloudera現代分析數據庫與傳統分析數據庫(Greenplum)進行了性能比較。我們還研究了分析數據庫與SQL-on-Hadoop引擎,例如:Hive LLAP、Spark SQL和Presto的對比。總的來說,我們發現:

● Impala相對於傳統分析數據庫而言性能更為先進,包括超過8倍的高併發工作負載性能。

● 分析數據庫和其他SQL-on-Hadoop引擎之間存在顯著的性能差異,使用Impala可以使多用戶工作負載的性能提高近22倍。

● 其他SQL-on-Hadoop引擎也無法完成大規模基準測試來與分析數據庫進行比較,因此需要一個簡化的、規模較小的基準測試(Hive甚至還需要修改,Presto無法完成多用戶測試)。

比較集分析數據庫(採用10TB和1TB級別的數據進行測試,未經修改的查詢)。● Impala 2.8 from CDH 5.10;

● Greenplum Database 4.3.9.1。

附加的SQL-on-Hadoop引擎(採用1TB級別的數據進行測試,並對Hive進行了一些查詢修改)。

● Spark SQL 2.1;

● Presto 0.160;

● Hive 2.1 with LLAP from HDP 2.5。

配置每一個集群由七個工作節點組成,每個節點採用以下配置:● CPU:2 塊E5-2698 v4 @ 2.20GHz;

● 存儲器:8 塊2TB硬盤;

● 內存:256GB內存。

我們配置了三個由相同硬件組成的集群,其中一個用於Impala、Spark和Presto(負責運行CDH),另一個用於Greenplum,還有一個用於具有LLAP(負責運行HDP)的Hive。每個集群都裝載了相同的TPC-DS數據:針對Impala和Spark的Parquet/Snappy,以及針對Hive和Presto的ORCFile/Zlib,而Greenplum使用內部的柱狀格式與QuickLZ壓縮文件。

查詢工作負載:● 數據:TPC-DS 10TB和1TB(比例係數);

● 查詢:TPC-DS v2.4查詢模板(未經修改的TPC-DS)。

我們運行了77個查詢,所有引擎的運行都具有語言支持,無需修改TPC-DS規範(Hive除外)。1其中22個已排除的查詢都使用以下幾個不常見的SQL功能:

● 使用ROLLUP進行的11個查詢(TPC-DS允許的變體在本測試中未使用);

● 3個INTERSECT或EXCEPT查詢;

● 8個具有高級子查詢位置的查詢(例如HAVING子句中的子查詢等)。

由於Hive對子查詢位置的更大限制,我們被迫進行了一些修改以創建語義上等同的查詢。我們針對Hive運行了這些經過修改的查詢。

雖然Greenplum、Presto和Spark SQL也聲稱支持所有99個未經修改的查詢,但是即使沒有併發執行,Spark SQL和Presto也無法成功完成10TB級別的99個查詢。Greenplum隨著多用戶併發性的增加而出現越來越多的查詢失敗(詳見下文)。

分析數據庫基準測試結果10 TB級別上Impala與Greenplum的比較我們使用常見的77個未修改的TPC-DS查詢在10TB級別數據下對Impala和Greenplum進行了測試。在單用戶測試和更實際的多用戶測試集上比較了兩個、四個和八個併發流。總結如下:● 總體來說,Impala在單用戶和多用戶併發測試方面優於Greenplum。

● 相比Greenplum而言,Impala 線性擴展表現更優異,隨著併發度增加,Impala與Greenplum的性能比率從2倍上升到了8.3倍,,同時保持了更高的成功率。

在單用戶測試中,當比較查詢中的幾何平均值時,Impala的性能是Greenplum的2.8倍;完成查詢流的總時間是Greenplum的1.8倍:

Apache Impala引領傳統分析數據庫技術的發展

對於多用戶吞吐量比較,我們使用TPC-DS dsqgen工具運行同一組77個未修改的查詢來生成併發查詢流。每個查詢流由隨機排序的77個通用查詢組成,並且每個查詢流使用不同的查詢替換值。我們運行了多個測試,增加了超過系統飽和點的查詢流數量,並且測量了各個併發級別的所有後續查詢的吞吐量。

如下圖所示,與Greenplum相比,Impala的性能指標隨著併發速度從2個查詢流2倍的速度提升加速到8個查詢流8.3倍的速度提升。

Apache Impala引領傳統分析數據庫技術的發展

鑑於集群的規模與數據集大小和併發性相比較而言較小,對於Impala和Greenplum這兩個系統而言,預期在併發性增加時會發現一些查詢失敗。Impala和Greenplum這兩個系統在兩個查詢流測試中達到了100%的成功率。對於四個和八個查詢流測試,Impala系統的平均成功率為97%,而Greenplum系統的成功率下降到50%。如果這些測試在大於7節點集群的集群上運行,則可以預期這兩個系統的成功率都會相應提高。分析數據庫與SQL-on-Hadoop引擎1TB基準測試我們已經嘗試針對SQL-on-Hadoop引擎使用相同的77個查詢和10TB級別基準測試,但是,Hive、Presto和Spark SQL都無法成功完成77個未修改查詢中的大多數查詢,甚至僅僅是單用戶結果也未能成功,因此無法在10TB級上進行比較。因此,我們在1TB規模下運行了單獨的比較,將分析數據庫引擎與其餘的SQL-on-Hadoop引擎進行比較。除了Hive之外,所有的引擎都使用相同的77個TPC-DS查詢,但是需要進行一些修改,以尋找方法去繞過這些限制條件,從而解決無法解析的子查詢。

通過這些簡化的標準(對於其他SQL-on-Hadoop引擎來說是非常必要的),我們再次對所有五個引擎進行了單用戶測試和更為真實環境的多用戶測試。測試結果彙總如下:

● 分析數據庫 – Impala和Greenplum系統在各個併發級別展現出的性能都優於所有的SQL-on-Hadoop引擎。

● 隨著併發性的提高,再次看到Impala在性能方面拔得頭籌,是其他引擎的8.5倍 – 21.6倍。

● 在所有引擎中,Presto在單用戶測試中表現出最慢的性能,甚至無法完成多用戶測試。

在該單用戶測試中,我們再次看到,在幾何平均值方面相較而言Impala仍然保持了其性能優勢,但是,Greenplum在總時間上略有下降。這兩個分析數據庫的性能顯著優於其他引擎,與其他SQL-on-Hadoop引擎相比,Impala在幾何平均值方面性能優勢在3.6倍至13倍之間,在總時間方面性能優勢在2.8倍-8.3倍之間。

Apache Impala引領傳統分析數據庫技術的發展

Presto對除了過濾、分組和聚合的簡單單表掃描之外的其他常見的 SQL 查詢表現的很掙扎。對於非常簡單的查詢類型,它更符合Spark SQL的性能,但是如上所述,對於使用更多標準SQL(包括連接)的更典型的商務智能(BI)查詢,是執行效果最差的SQL-on-Hadoop集群。

使用TPC-DS通過四個、八個和十六個併發流運行更具代表性的多用戶比較測試,以生成與上述的10TB分析數據庫比較一樣的隨機查詢流。除Presto之外,所有引擎都能夠在三個併發級別的1TB級別下完成流,而不會出現任何查詢失敗。即使只運行四個併發查詢,Presto也可能由於內存不足錯誤而使大多數查詢失敗。

對於能夠成功完成多用戶併發測試的引擎,分析數據庫組群和SQL-on-Hadoop組群之間的性能差異變得更加明顯。Impala在每一個併發級別上都展示出了優異的吞吐量 – 不僅比Greenplum快1.3-2.8倍,與Spark SQL相比,其速度快達6.5-21.6倍,並且比Hive快8.5-19.9倍。

Apache Impala引領傳統分析數據庫技術的發展

結論各企業機構越來越期待現代化改造其系統架構,但是不願意犧牲重要商務智能(BI)和SQL分析所需的交互式、多用戶性能。Impala作為Cloudera公司平臺的一部分,能夠獨特地提供一個現代化分析數據庫。通過設計,Impala可以靈活地支持更多種類的數據和使用案例,而無需任何前期建模工作;Impala可以有彈性地和成本高效地在公司內部部署和雲端部署方式下按需進行擴展;並且,作為共享平臺的一部分,這些相同的數據可用於其他團隊和工作負載,而不僅僅只是SQL分析,因此可以進一步拓展其價值。此外,從上述基準測試結果可以看出,與傳統分析數據庫相比,Impala還提供了領先的性能。無論整體性能還是大規模運算以及不斷激增的併發性工作負載能力方面,分析數據庫群(Impala、Greenplum)和SQL-on-Hadoop組群(Hive,Presto,Spark)之間的差異也變得非常明顯。雖然其他SQL-on-Hadoop引擎不能滿足分析數據庫工作負載的要求,但這並不意味著對其他工作負載沒有價值。事實上,絕大多數Cloudera客戶充分利用平臺的開放架構,通過Hive準備數據,通過Spark建立和測試模型,通過Impala運行商務智能(BI)並提供報告,而無需在不同的孤島中複製數據。

在接下來的一年中,我們將以Impala為核心繼續推動現代化分析數據庫的重大性能改進,包括增加商務智能(BI)體驗的智能化和自動化,並且不斷擴大雲計算支持,進一步提高多租戶能力和可擴展性。請點擊此博客瞭解更多詳情。

像往常一樣,我們鼓勵您通過基於開放式基準測試工具包運行您自己的基準測試以獨立驗證這些結果。

via: Cloudera中國

End.

相關推薦

推薦中...