1. 程式人生 > >SQL資料分析概覽——Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto+druid

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

轉自infoQ!

根據 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”。

(有讀者問:Druid 呢?我的回答是:檢查後,我同意Druid 屬於這一類別。)

使用SQL 引擎一詞是有點隨意的。例如Hive 不是一個引擎,它的框架使用MapReduce、TeZ 或者Spark 引擎去執行查詢,而且它並不執行SQL,而是HiveQL,一種類似SQL 的語言,非常接近SQL。“SQL-in-Hadoop” 也不適用,雖然Hive 和Impala 主要使用Hadoop,但是Spark、Drill、HAWQ 和Presto 還可以和各種其他的資料儲存系統配合使用。

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

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

雖然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 引擎更感興趣。

對於開源專案來說,最佳的健康度量是它的活躍開發者社群的大小。如下面的圖3所示,Hive 和Presto 有最大的貢獻者基礎。(Spark SQL 的資料暫缺)

在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 來提交查詢。

。。

其他專案