SQL數據分析概覽——Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto+druid

轉自infoQ!html

 

根據 O’Reilly 2016年數據科學薪資調查顯示,SQL 是數據科學領域使用最普遍的語言。大部分項目都須要一些SQL 操做,甚至有一些只須要SQL。前端

本文涵蓋了6個開源領導者:Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto,還加上Calcite、Kylin、Phoenix、Tajo 和Trafodion。以及2個商業化選擇Oracle Big Data SQL 和IBM Big SQL,IBM 還沒有將後者改名爲「Watson SQL」。sql

(有讀者問:Druid 呢?個人回答是:檢查後,我贊成Druid 屬於這一類別。)數據庫

使用SQL 引擎一詞是有點隨意的。例如Hive 不是一個引擎,它的框架使用MapReduce、TeZ 或者Spark 引擎去執行查詢,並且它並不運行SQL,而是HiveQL,一種相似SQL 的語言,很是接近SQL。「SQL-in-Hadoop」 也不適用,雖然Hive 和Impala 主要使用Hadoop,可是Spark、Drill、HAWQ 和Presto 還能夠和各類其餘的數據存儲系統配合使用。

不像關係型數據庫,SQL 引擎獨立於數據存儲系統。相對而言,關係型數據庫將查詢引擎和存儲綁定到一個單獨的緊耦合系統中,這容許某些類型的優化。另外一方面,拆分它們,提供了更大的靈活性,儘管存在潛在的性能損失。apache

下面的圖1展現了主要的SQL 引擎的流行程度,數據由奧地利諮詢公司Solid IT 維護的DB-Engines提供。DB-Engines 每個月爲超過200個數據庫系統計算流行得分。得分反應了搜索引擎的查詢,在線討論的說起,提供的工做,專業資歷的說起,以及tweets。後端

 

來源:DB-Engines,2017年1月 http://db-engines.com/en/ranking緩存

雖然Impala、Spark SQL、Drill、Hawq 和Presto 一直在運行性能、併發量和吞吐量上擊敗Hive,可是Hive 仍然是最流行的(至少根據DB-Engines 的標準)。緣由有3個:服務器

  • Hive 是Hadoop 的默認SQL 選項,每一個版本都支持。而其餘的要求特定的供應商和合適的用戶;
  • Hive 已經在減小和其餘引擎的性能差距。大多數Hive 的替代者在2012年推出,分析師等待Hive 查詢的完成等到要自殺。然而當Impala、Spark、Drill 等大步發展的時候,Hive只是一直跟着,慢慢改進。如今,雖然Hive 不是最快的選擇,可是它比五年前要好得多;
  • 雖然前沿的速度很酷,可是大多數機構都知道世界並無盡頭。即便一個年輕的市場經理須要等待10秒鐘來查明上週二Duxbury 餐廳的雞翅膀的銷量是否超過了牛肉漢堡。

在下面的圖2中能夠看出,相對於領先的商業數據倉庫應用,用戶對頂尖的SQL 引擎更感興趣。併發

來源:DB-Engines,2017年1月 http://db-engines.com/en/rankingoracle

對於開源項目來講,最佳的健康度量是它的活躍開發者社區的大小。以下面的圖3所示,Hive 和Presto 有最大的貢獻者基礎。(Spark SQL 的數據暫缺)

來源:Open Hub https://www.openhub.net/

在2016年,ClouderaHortonworksKognitio 和Teradata 陷入了Tony Baer 總結的基準測試之戰,使人震驚的是,供應商偏心的SQL 引擎在每個研究中都擊敗了其餘選擇,這帶來一個問題:基準測試還有意義嗎?

AtScale 一年兩次的基準測試並非毫無根據的。做爲一個BI 初創公司,AtScale 銷售銜接BI 前端和SQL 後端的軟件。公司的軟件是引擎中立的,它嘗試儘量多的兼容,其在BI 領域的普遍經驗讓這些測試有了實際的意義。

AtScale 最近的關鍵發現,包括了Hive、Impala、Spark SQL 和Presto:

  • 4個引擎都成功運行了AtScale 的BI 基準查詢;
  • 取決於數據量、查詢複雜度和併發用戶數,每一個引擎都有本身的性能優點:
    • Impala 和Spark SQL 在小數據量的查詢上擊敗了其餘人;
    • Impala 和Spark SQL 在大數據量的複雜join 上擊敗了其餘人;
    • Impala 和Presto 在併發測試上表現的更好。
  • 對比6個月以前的基準測試,全部的引擎都有了2-4倍的性能提高。

Alex Woodie 報告了測試結果,Andrew Oliver 對其進行分析

讓咱們來深刻了解這些項目。

Apache Hive

在2016年,Hive 有100多人的貢獻者。該團隊在2月份發佈了Hive 2.0,並在6月份發佈了Hive 2.1。Hive 2.0 的改進包括了對Hive-on-Spark 的多個改進,以及性能、可用性、可支持性和穩定性加強。Hive 2.1 包括了Hive LLAP(」Live Long and Process「),它結合持久化的查詢服務器和優化後的內存緩存,來實現高性能。該團隊聲稱提升了25倍。

Apache Impala

2012年,Cloudera 推出了Impala,一個開源的MPP SQL 引擎,做爲Hive 的高性能替代品。Impala 使用HDFS 和HBase,並利用了Hive 元數據。可是,它繞開了使用MapReduce 運行查詢。

。。。

9月,Cloudera 發佈了一項研究結果,該研究比較了Impala 和Amazon Web Services 的Redshift 列存儲數據庫。報告讀起來頗有意思,雖然主題一向的須要注意供應商的基準測試。

Spark SQL

。。。

Apache Drill

2012年,由Hadoop 分銷商的領導者之一MapR 領導的一個團隊,提出構建一個Google Dremel 的開源版本,一個交互式的分佈式熱點分析系統。

2015年,兩位關鍵的Drill 貢獻者離開了MapR,並啓動了Dremio,該項目還沒有發佈。

Apache HAWQ

。。。

Presto

Facebook 工程師在2012年發起Presto 項目,做爲Hive 的一個快速交互的取代。在2013年推出時,成功的支持了超過1000個Facebook 用戶和天天超過30000個PB級數據的查詢。2013年Facebook 開源了Presto。

Presto 支持多種數據源的ANSI SQL 查詢,包括Hive、Cassandra、關係型數據庫和專有文件系統(例如Amazon Web Service 的S3)。Presto 的查詢能夠聯合多個數據源。用戶能夠經過C、Java、Node.js、PHP、Python、R和Ruby 來提交查詢。

。。

其餘項目

pass

相關文章
相關標籤/搜索