天天看點

[Spark]Shark, Spark SQL, Hive on Spark以及SQL On Spark的未來

随着

Spark SQ

的引入以及

Hive On Apache Spark

的新功能(HIVE-7292)的引入,我們對這兩個項目的立場以及它們與Shark的關系有了很多的關注。在今天的Spark Summit上,我們宣布我們正在停止

Shark

的開發,并将資源全部集中在

Spark SQL

上,這将為現有

Shark

使用者提供一個

Shark

特色的圈子(will provide a superset of Shark’s features for existing Shark users to move forward)。特别是,

Spark SQL

将提供從Shark 0.9伺服器進行無縫更新途徑,以及與Spark程式內建的新功能。
[Spark]Shark, Spark SQL, Hive on Spark以及SQL On Spark的未來

https://note.youdao.com/md/preview/preview.html?file=%2Fyws%2Fapi%2Fpersonal%2Ffile%2FWEB37e6dd86e6d4ff984c360fe7f8812a30%3Fmethod%3Ddownload%26read%3Dtrue#1-shark 1. Shark

3年前Shark項目開始時,Hive(MapReduce)是Hadoop上SQL的唯一選擇。Hive将SQL編譯成可擴充的MapReduce作業,并可以使用各種格式(通過其SerDes)。 但是,它的性能不如理想。為了互動式查詢,組織部署了昂貴的專有企業資料倉庫(EDW),這些倉庫需要嚴格且冗長的ETL管道( organizations deployed expensive, proprietary enterprise data warehouses (EDWs) that required rigid and lengthy ETL pipelines)。

Hive和EDW之間的表現形成了鮮明的對比,導緻了行業内一個巨大的争議,質疑通用資料處理引擎查詢處理的固有缺陷。 許多人認為SQL互動需要為查詢處理提供一個昂貴的專門的運作時建構(例如,EDW)(Many believed SQL interactivity necessitates an expensive, specialized runtime built for query processing)。

Shark

将成為第一個基于Hadoop系統的互動式SQL之一,是唯一一個建構在通用運作架構(Spark)之上(Shark became one of the first interactive SQL on Hadoop systems, and was the only one built on top of a general runtime (Spark))。It demonstrated that none of the deficiencies that made Hive slow were fundamental, and a general engine such as Spark could marry the best of both worlds: it can be as fast as an EDW, and scales as well as Hive/MapReduce.

https://note.youdao.com/md/preview/preview.html?file=%2Fyws%2Fapi%2Fpersonal%2Ffile%2FWEB37e6dd86e6d4ff984c360fe7f8812a30%3Fmethod%3Ddownload%26read%3Dtrue#2-%E4%BB%8Eshark%E5%88%B0spark-sql 2. 從Shark到Spark SQL

Shark建立在Hive代碼庫上,通過交換Hive的實體執行引擎部分來實作性能提升(swapping out the physical execution engine part of Hive)。雖然這種方法使Shark使用者能夠加快其Hive查詢,但Shark繼承了Hive中龐大而複雜的代碼庫,進而難以優化和維護。 随着我們推動性能優化的邊界,并将複雜分析與SQL內建,我們受到為MapReduce設計而遺留的限制。

正是由于這個原因,我們将結束Shark作為一個單獨項目的開發,并将所有開發資源轉移到Spark的新元件

Spark SQL

上。我們正在将我們在Shark中學到的内容應用到

Spark SQL

中,充分利用Spark的強大功能。這種新方法使我們能夠更快地創新,并最終為使用者帶來更好的體驗。

對于SQL使用者,

Spark SQL

提供了最先進的SQL性能,并保持與Shark/Hive的相容性。特别是像Shark一樣,

Spark SQL

支援現有所有Hive資料格式,使用者自定義函數(UDF)和Hive metastore。 随着将在Apache Spark 1.1.0中引入的功能,Spark SQL在TPC-DS性能方面比Shark好幾乎一個數量級。

對于Spark使用者,Spark SQL可以處理(半)結構化資料(Spark SQL becomes the narrow-waist for manipulating (semi-) structured data),以及從提供

schema

的資料源(如JSON,Parquet,Hive或EDW)中提取資料。它真正統一了SQL和複雜分析,允許使用者混合和比對SQL以及允許使用更多的指令式程式設計API進行進階分析。

對于開源黑客,Spark SQL提出了建構查詢計劃者的一種新穎優雅的方式。 在這個架構下添加新的優化是非常容易的。我們驚訝于 開源社群對

Spark SQL

所展示出的支援和熱情,這在很大程度上得益于這一新設計。經過三個月的時間,40多個捐助者已經為此編寫了代碼。

https://note.youdao.com/md/preview/preview.html?file=%2Fyws%2Fapi%2Fpersonal%2Ffile%2FWEB37e6dd86e6d4ff984c360fe7f8812a30%3Fmethod%3Ddownload%26read%3Dtrue#3-hive-on-spark 3. Hive On Spark

雖然Spark SQL正在成為

SQL on Spark

的标準,但是我們确實意識到許多公司以及組織Hive的投資。 然而,這些組織中的很多也渴望遷移到Spark。Hive社群為該項目提出了一項新舉措,将Spark添加為Hive的執行引擎之一。 對于這些組織,這項工作将為他們将執行遷移到Spark提供一條明确的途徑。我們很高興與Hive社群合作和支援,為最終使用者提供平滑的體驗。

總之,我們堅信Spark SQL将不僅是SQL,而且還是Spark進行結構化資料處理的未來。

原文:

https://databricks.com/blog/2014/07/01/shark-spark-sql-hive-on-spark-and-the-future-of-sql-on-spark.html

繼續閱讀