精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

6大主流開源SQL引擎總結(jié),遙遙領(lǐng)先的是誰?

責(zé)任編輯:editor004

作者:覃璐

2017-04-24 11:05:01

摘自:InfoQ

取決于數(shù)據(jù)量、查詢復(fù)雜度和并發(fā)用戶數(shù),每個(gè)引擎都有自己的性能優(yōu)勢(shì):  Impala 和Spark SQL 在小數(shù)據(jù)量的查詢上擊敗了其他人;Spark SQL 用戶可以運(yùn)行SQL 查詢

  作者|覃璐

編輯|Tina

根據(jù) O’Reilly 2016年數(shù)據(jù)科學(xué)薪資調(diào)查顯示,SQL 是數(shù)據(jù)科學(xué)領(lǐng)域使用最廣泛的語言。大部分項(xiàng)目都需要一些SQL 操作,甚至有一些只需要SQL。本文就帶你來了解這些主流的開源SQL引擎!

背景介紹

本文涵蓋了6個(gè)開源領(lǐng)導(dǎo)者:Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto,還加上Calcite、Kylin、Phoenix、Tajo 和Trafodion。以及2個(gè)商業(yè)化選擇Oracle Big Data SQL 和IBM Big SQL,IBM 尚未將后者更名為“Watson SQL”。

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

使用SQL 引擎一詞是有點(diǎn)隨意的。例如Hive 不是一個(gè)引擎,它的框架使用MapReduce、TeZ 或者Spark 引擎去執(zhí)行查詢,而且它并不運(yùn)行SQL,而是HiveQL,一種類似SQL 的語言,非常接近SQL。“SQL-in-Hadoop” 也不適用,雖然Hive 和Impala 主要使用Hadoop,但是Spark、Drill、HAWQ 和Presto 還可以和各種其他的數(shù)據(jù)存儲(chǔ)系統(tǒng)配合使用。

不像關(guān)系型數(shù)據(jù)庫,SQL 引擎獨(dú)立于數(shù)據(jù)存儲(chǔ)系統(tǒng)。相對(duì)而言,關(guān)系型數(shù)據(jù)庫將查詢引擎和存儲(chǔ)綁定到一個(gè)單獨(dú)的緊耦合系統(tǒng)中,這允許某些類型的優(yōu)化。另一方面,拆分它們,提供了更大的靈活性,盡管存在潛在的性能損失。

下面的圖1展示了主要的SQL 引擎的流行程度,數(shù)據(jù)由奧地利咨詢公司Solid IT 維護(hù)的DB-Engines 提供。DB-Engines 每月為超過200個(gè)數(shù)據(jù)庫系統(tǒng)計(jì)算流行得分。得分反應(yīng)了搜索引擎的查詢,在線討論的提及,提供的工作,專業(yè)資歷的提及,以及tweets。

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

雖然Impala、Spark SQL、Drill、Hawq 和Presto 一直在運(yùn)行性能、并發(fā)量和吞吐量上擊敗Hive,但是Hive 仍然是最流行的(至少根據(jù)DB-Engines 的標(biāo)準(zhǔn))。原因有3個(gè):

Hive 是Hadoop 的默認(rèn)SQL 選項(xiàng),每個(gè)版本都支持。而其他的要求特定的供應(yīng)商和合適的用戶;

Hive 已經(jīng)在減少和其他引擎的性能差距。大多數(shù)Hive 的替代者在2012年推出,分析師等待Hive 查詢的完成等到要自殺。然而當(dāng)Impala、Spark、Drill 等大步發(fā)展的時(shí)候,Hive只是一直跟著,慢慢改進(jìn)。現(xiàn)在,雖然Hive 不是最快的選擇,但是它比五年前要好得多;

雖然前沿的速度很酷,但是大多數(shù)機(jī)構(gòu)都知道世界并沒有盡頭。即使一個(gè)年輕的市場(chǎng)經(jīng)理需要等待10秒鐘來查明上周二Duxbury 餐廳的雞翅膀的銷量是否超過了牛肉漢堡。

在下面的圖2中可以看出,相對(duì)于領(lǐng)先的商業(yè)數(shù)據(jù)倉庫應(yīng)用,用戶對(duì)頂尖的SQL 引擎更感興趣。

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

對(duì)于開源項(xiàng)目來說,最佳的健康度量是它的活躍開發(fā)者社區(qū)的大小。如下面的圖3所示,Hive 和Presto 有最大的貢獻(xiàn)者基礎(chǔ)。(Spark SQL 的數(shù)據(jù)暫缺)

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

在2016年,Cloudera、Hortonworks、Kognitio 和Teradata 陷入了Tony Baer 總結(jié)的基準(zhǔn)測(cè)試之戰(zhàn),令人震驚的是,供應(yīng)商偏愛的SQL 引擎在每一個(gè)研究中都擊敗了其他選擇,這帶來一個(gè)問題:基準(zhǔn)測(cè)試還有意義嗎?

AtScale 一年兩次的基準(zhǔn)測(cè)試并不是毫無根據(jù)的。作為一個(gè)BI 初創(chuàng)公司,AtScale 銷售銜接BI 前端和SQL 后端的軟件。公司的軟件是引擎中立的,它嘗試盡可能多的兼容,其在BI 領(lǐng)域的廣泛經(jīng)驗(yàn)讓這些測(cè)試有了實(shí)際的意義。

AtScale 最近的關(guān)鍵發(fā)現(xiàn),包括了Hive、Impala、Spark SQL 和Presto:

4個(gè)引擎都成功運(yùn)行了AtScale 的BI 基準(zhǔn)查詢;

取決于數(shù)據(jù)量、查詢復(fù)雜度和并發(fā)用戶數(shù),每個(gè)引擎都有自己的性能優(yōu)勢(shì):

Impala 和Spark SQL 在小數(shù)據(jù)量的查詢上擊敗了其他人;

Impala 和Spark SQL 在大數(shù)據(jù)量的復(fù)雜join 上擊敗了其他人;

Impala 和Presto 在并發(fā)測(cè)試上表現(xiàn)的更好。

對(duì)比6個(gè)月之前的基準(zhǔn)測(cè)試,所有的引擎都有了2-4倍的性能提升。

Alex Woodie 報(bào)告了測(cè)試結(jié)果,Andrew Oliver 對(duì)其進(jìn)行分析。

讓我們來深入了解這些項(xiàng)目。

Apache Hive

Apache Hive 是Hadoop 生態(tài)系統(tǒng)中的第一個(gè)SQL 框架。Facebook 的工程師在2007年介紹了Hive,并在2008年將代碼捐獻(xiàn)給Apache 軟件基金會(huì)。2010年9月,Hive 畢業(yè)成為Apache 頂級(jí)項(xiàng)目。Hadoop 生態(tài)系統(tǒng)中的每個(gè)主要參與者都發(fā)布和支持Hive,包括Cloudera、MapR、Hortonworks 和IBM。Amazon Web Services 在Elastic MapReduce(EMR)中提供了Hive 的修改版作為云服務(wù)。

早期發(fā)布的Hive 使用MapReduce 運(yùn)行查詢。復(fù)雜查詢需要多次傳遞數(shù)據(jù),這會(huì)降低性能。所以Hive 不適合交互式分析。由Hortonworks 領(lǐng)導(dǎo)的Stinger 明顯的提高了Hive 的性能,尤其是通過使用Apache Tez,一個(gè)精簡(jiǎn)MapReduce 代碼的應(yīng)用框架。Tez 和ORCfile,一種新的存儲(chǔ)格式,對(duì)Hive 的查詢產(chǎn)生了明顯的提速。

Cloudera 實(shí)驗(yàn)室?guī)ьI(lǐng)一個(gè)并行項(xiàng)目重新設(shè)計(jì)Hive 的后端,使其運(yùn)行在Apache Spark 上。經(jīng)過長(zhǎng)期測(cè)試后,Cloudera 在2016年初發(fā)布了Hive-on-Spark 的正式版本。

在2016年,Hive 有100多人的貢獻(xiàn)者。該團(tuán)隊(duì)在2月份發(fā)布了Hive 2.0,并在6月份發(fā)布了Hive 2.1。Hive 2.0 的改進(jìn)包括了對(duì)Hive-on-Spark 的多個(gè)改進(jìn),以及性能、可用性、可支持性和穩(wěn)定性增強(qiáng)。Hive 2.1 包括了Hive LLAP(”Live Long and Process“),它結(jié)合持久化的查詢服務(wù)器和優(yōu)化后的內(nèi)存緩存,來實(shí)現(xiàn)高性能。該團(tuán)隊(duì)聲稱提高了25倍。

9月,Hivemall 項(xiàng)目進(jìn)入了Apache 孵化器,正如我在我的機(jī)器學(xué)習(xí)年度總結(jié)的第二部分中指出的。Hivemall 最初由Treasure Data 開發(fā)并捐獻(xiàn)給Apache 軟件基金會(huì),它是一個(gè)可擴(kuò)展的機(jī)器學(xué)習(xí)庫,通過一系列的Hive UDF 來實(shí)現(xiàn),設(shè)計(jì)用于在Hive、Pig 和Spark SQL 上運(yùn)行MapReduce。該團(tuán)隊(duì)計(jì)劃在2017年第一季度發(fā)布了第一個(gè)版本。

Apache Impala

2012年,Cloudera 推出了Impala,一個(gè)開源的MPP SQL 引擎,作為Hive 的高性能替代品。Impala 使用HDFS 和HBase,并利用了Hive 元數(shù)據(jù)。但是,它繞開了使用MapReduce 運(yùn)行查詢。

Cloudera 的首席戰(zhàn)略官M(fèi)ike Olson 在2013年底說到Hive 的架構(gòu)是有根本缺陷的。在他看來,開發(fā)者只能用一種全新的方式來實(shí)現(xiàn)高性能SQL,例如Impala。2014年的1月、5月和9月,Cloudera 發(fā)布了一系列的基準(zhǔn)測(cè)試。在這些測(cè)試中,Impala 展示了其在查詢運(yùn)行的逐步改進(jìn),并且顯著優(yōu)于基于Tez 的Hive、Spark SQL 和Presto。除了運(yùn)行快速,Impala 在并發(fā)行、吞吐量和可擴(kuò)展性上也表現(xiàn)優(yōu)秀。2015年,Cloudera 將Impala 捐獻(xiàn)給Apache 軟件基金會(huì),進(jìn)入了Apache 孵化計(jì)劃。Cloudera、MapR、Oracle 和Amazon Web Services 分發(fā)Impala,Cloudera、MapR 和Oracle 提供了商業(yè)構(gòu)建和安裝支持。

2016年,Impala 在Apache 孵化器中取得了穩(wěn)步發(fā)展。該團(tuán)隊(duì)清理了代碼,將其遷移到Apache 基礎(chǔ)架構(gòu),并在10月份發(fā)布了第一個(gè)Apache 版本2.7.0。新版本包括了性能提升和可擴(kuò)展性改進(jìn),以及一些其他小的增強(qiáng)。

9月,Cloudera 發(fā)布了一項(xiàng)研究結(jié)果,該研究比較了Impala 和Amazon Web Services 的Redshift 列存儲(chǔ)數(shù)據(jù)庫。報(bào)告讀起來很有意思,雖然主題一貫的需要注意供應(yīng)商的基準(zhǔn)測(cè)試。

Spark SQL

Spark SQL 是Spark 用于結(jié)構(gòu)化數(shù)據(jù)處理的組件。Apache Spark 團(tuán)隊(duì) 在2014年發(fā)布了Spark SQL,并吸收了一個(gè)叫Shark 的早期的Hive-on-Spark 項(xiàng)目。它迅速成為最廣泛使用的Spark 模塊。

Spark SQL 用戶可以運(yùn)行SQL 查詢,從Hive 中讀取數(shù)據(jù),或者使用它來創(chuàng)建Spark Dataset和DataFrame(Dataset 是分布式的數(shù)據(jù)集合,DataFrame 是統(tǒng)一命名的Dataset 列)。Spark SQL 的接口向Spark 提供了數(shù)據(jù)結(jié)構(gòu)和執(zhí)行操作的信息,Spark 的Catalyst 優(yōu)化器使用這些信息來構(gòu)造一個(gè)高效的查詢。

2015年,Spark 的機(jī)器學(xué)習(xí)開發(fā)人員引入了ML API,一個(gè)利用Spark DataFrame 代替低級(jí)別Spark RDD API 的包。這種方法被證明是有吸引力和富有成果的;2016年,隨著2.0 的發(fā)布,Spark 團(tuán)隊(duì)將基于RDD 的API改為維護(hù)模式。DataFrame API現(xiàn)在是Spark 機(jī)器學(xué)習(xí)的主要接口。

此外,在2016年,該團(tuán)隊(duì)還在Spark 2.1.0的Alpha 版本中發(fā)布了結(jié)構(gòu)化的流式處理。結(jié)構(gòu)化的流式處理是構(gòu)建在Spark SQL 上的一個(gè)流處理引擎。用戶可以像對(duì)待靜態(tài)源一樣,用同樣的方式查詢流式數(shù)據(jù)源,并且可以在單個(gè)查詢中組合流式和靜態(tài)源。Spark SQL 持續(xù)運(yùn)行查詢,并且在流式數(shù)據(jù)到達(dá)的時(shí)候更新結(jié)果。結(jié)構(gòu)化的流通過檢查點(diǎn)和預(yù)寫日志來提供一次性的容錯(cuò)保障。

Apache Drill

2012年,由Hadoop 分銷商的領(lǐng)導(dǎo)者之一MapR 領(lǐng)導(dǎo)的一個(gè)團(tuán)隊(duì),提出構(gòu)建一個(gè)Google Dremel 的開源版本,一個(gè)交互式的分布式熱點(diǎn)分析系統(tǒng)。他們將其命名為Apache Drill。Drill 在Apache 孵化器中被冷落了兩年多,最終在2014年底畢業(yè)。該團(tuán)隊(duì)在2015年發(fā)布了1.0。

MapR 分發(fā)和支持Apache Drill。

2016年,超過50個(gè)人對(duì)Drill 做出了貢獻(xiàn)。該團(tuán)隊(duì)在2016年發(fā)布了5個(gè)小版本,關(guān)鍵的增強(qiáng)功能包括:

Web 認(rèn)證

支持Apache Kudu 列數(shù)據(jù)庫

支持HBase 1.x

動(dòng)態(tài)UDF 支持

2015年,兩位關(guān)鍵的Drill 貢獻(xiàn)者離開了MapR,并啟動(dòng)了Dremio,該項(xiàng)目尚未發(fā)布。

Apache HAWQ

Pivotal 軟件在2012年推出了一款商業(yè)許可的高性能SQL 引擎HAWQ,并在嘗試市場(chǎng)營(yíng)銷時(shí)取得了小小的成功。改變戰(zhàn)略后,Pivotal 在2015年6月將項(xiàng)目捐獻(xiàn)給了Apache,并于2015年9月進(jìn)入了Apache 孵化器程序。

15個(gè)月之后,HAWQ 仍然待在孵化器中。2016年12月,該團(tuán)隊(duì)發(fā)布了HAWQ 2.0.0.0,加入了一些錯(cuò)誤修復(fù)。我猜它會(huì)在2017年畢業(yè)。

對(duì)HAWQ 喜愛的一個(gè)小點(diǎn)是它支持Apache MADlib,一個(gè)同樣在孵化器中的SQL 機(jī)器學(xué)習(xí)項(xiàng)目。HAWQ 和MADlib 的組合,應(yīng)該是對(duì)購買了Greenplum 并且想知道發(fā)生了什么的人們的一個(gè)很好的安慰。

Presto

Facebook 工程師在2012年發(fā)起了Presto 項(xiàng)目,作為Hive 的一個(gè)快速交互的取代。在2013年推出時(shí),成功的支持了超過1000個(gè)Facebook 用戶和每天超過30000個(gè)PB級(jí)數(shù)據(jù)的查詢。2013年Facebook 開源了Presto。

Presto 支持多種數(shù)據(jù)源的ANSI SQL 查詢,包括Hive、Cassandra、關(guān)系型數(shù)據(jù)庫和專有文件系統(tǒng)(例如Amazon Web Service 的S3)。Presto 的查詢可以聯(lián)合多個(gè)數(shù)據(jù)源。用戶可以通過C、Java、Node.js、PHP、Python、R和Ruby 來提交查詢。

Airpal 是Airbnb 開發(fā)的一個(gè)基于web 的查詢工具,讓用戶可以通過瀏覽器來提交查詢到Presto。Qubole 位Presto 提供了管理服務(wù)。AWS 在EMR 上提供Presto 服務(wù)。

2015年6月,Teradata 宣布計(jì)劃開發(fā)和支持該項(xiàng)目。根據(jù)宣布的三階段計(jì)劃,Teredata 提出將Presto 集成導(dǎo)Hadoop 生態(tài)系統(tǒng)中,能夠在YARN 中進(jìn)行操作,并且通過ODBC 和JDBC 增強(qiáng)連接性。Teredata 提供了自己的Presto 發(fā)行版,附帶一份數(shù)據(jù)表。2016年6月,Teradata 宣布了Information Builders、Looker、Qlik、Tableau 和ZoomData 的鑒定結(jié)果,以及正在進(jìn)行中的MicroStrategy 和Microsoft Power BI。

Presto 是一個(gè)非常活躍的項(xiàng)目,有一個(gè)巨大的和充滿活力的貢獻(xiàn)者社區(qū)。該團(tuán)隊(duì)發(fā)布的速度比Miki Sudo 吃熱狗的速度還要快--我統(tǒng)計(jì)了下,2016年共發(fā)布了42個(gè)版本。Teradata 并沒有打算總結(jié)有什么新的東西,我也不打算在42個(gè)發(fā)行說明里去篩選,所以就讓我們說它更好吧。

其他Apache 項(xiàng)目

這里還有5個(gè)其他的Apache 生態(tài)系統(tǒng)的SQL 混合項(xiàng)目。

Apache Calcite

Apache Calcite 是一個(gè)開源的數(shù)據(jù)庫構(gòu)建框架。它包括:

SQL 解析器、驗(yàn)證器和JDBC 驅(qū)動(dòng)

查詢優(yōu)化工具,包括關(guān)系代數(shù)API,基于規(guī)則的計(jì)劃器和基于成本的查詢優(yōu)化器

Apache Hive 使用Calcite 進(jìn)行基于成本的查詢優(yōu)化,而Apache Drill 和Apache Kylin 使用SQL 解析器。

Calcite 團(tuán)隊(duì)在2016年推出了5個(gè)版本包括bug 修復(fù)和用于Cassandra、Druid 和Elasticsearch 的新適配器。

Apache Kylin

Apache Kylin 是一個(gè)具有SQL 接口的OLAP 引擎。由eBay 開發(fā)并捐獻(xiàn)給Apache,Kylin 在2015年畢業(yè)成為頂級(jí)項(xiàng)目。

2016年成立的創(chuàng)業(yè)公司Kyligence 提供商業(yè)支持和一個(gè)叫做KAP 的數(shù)據(jù)倉庫產(chǎn)品,雖然在Crunchbase 上沒有列出它的資金情況,有消息來源稱它有一個(gè)強(qiáng)大的背景,并且在上海有個(gè)大辦公室。

Apache Phoenix

Apache Phoenix 是一個(gè)運(yùn)行在HBase 上的SQL 框架,繞過了MapReduce。Salesforce 開發(fā)了該軟件并在2013年捐獻(xiàn)給了Apache。2014年5月項(xiàng)目畢業(yè)成為頂級(jí)項(xiàng)目。Hortonworks 的Hortonworks 數(shù)據(jù)平臺(tái)中包含該項(xiàng)目。自從領(lǐng)先的SQL 引擎都適配HBase 之后,我不清楚為什么我們還需要Phoenix。

Apache Tajo

Apache Tajo 是Gruter 在2011年推出的一個(gè)快速SQL 數(shù)據(jù)倉庫框架,一個(gè)大數(shù)據(jù)基礎(chǔ)設(shè)施公司,并在2013年捐獻(xiàn)給Apache。2014年Tajo 畢業(yè)成為頂級(jí)項(xiàng)目。在作為Gruter 主要市場(chǎng)的韓國(guó)之外,該項(xiàng)目很少吸引到預(yù)期用戶和貢獻(xiàn)者的興趣。除了Gartner 的Nick Heudecker 曾提過,該項(xiàng)目不在任何人的工作臺(tái)上。

Apache Trafodion

Apache Trafodion 是另一個(gè)SQL-on-HBase 項(xiàng)目,由HP 實(shí)驗(yàn)室構(gòu)思,它告訴你幾乎所有你需要知道的。2014年6月HP 發(fā)布Trafodion,一個(gè)月之后,Apache Phoenix 畢業(yè)投產(chǎn)。6個(gè)月之后,HP 的高管們認(rèn)為相對(duì)于另一款SQL-on-HBase 引擎,它的商業(yè)潛力有限,所以他們將項(xiàng)目捐獻(xiàn)給了Apache,項(xiàng)目于2015年5月進(jìn)入孵化器。

如果孵化結(jié)束,Trafodion 承諾成為一個(gè)事務(wù)數(shù)據(jù)庫。不幸的是,這個(gè)領(lǐng)域有大量的選擇,而開發(fā)團(tuán)隊(duì)唯一的競(jìng)爭(zhēng)優(yōu)勢(shì)似乎是“它是開源的,所以它很便宜”。

今日薦文

  技術(shù)轉(zhuǎn)管理可能遇到的 3 大挑戰(zhàn)及解決方案

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 太保市| 永登县| 芷江| 剑阁县| 三原县| 庆城县| 尼木县| 邹城市| 海盐县| 昌吉市| 江阴市| 忻城县| 廊坊市| 马鞍山市| 长宁县| 武功县| 普安县| 勐海县| 原阳县| 湖北省| 石城县| 云和县| 专栏| 津南区| 弥勒县| 高州市| 中西区| 平顶山市| 中宁县| 金山区| 靖安县| 常德市| 长武县| 庄浪县| 门头沟区| 枣强县| 佛坪县| 宜城市| 永川市| 彭州市| 嫩江县|