真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何理解SQL及Thrift

今天就跟大家聊聊有關(guān)如何理解 SQL及Thrift,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、內(nèi)鄉(xiāng)網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站成都商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為內(nèi)鄉(xiāng)等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

1

Hive SQL &Spark SQL

這是一個復(fù)雜的歷史,基本上是一個“忒修斯船”(Ship of Theseus)的故事。最開始的時候,Spark SQL的代碼幾乎全部都是Hive的照搬,隨著時間的推移,Hive的代碼被逐漸替換,直到幾乎沒有原始的Hive代碼保留。

參考:https://en.wikipedia.org/wiki/Ship_of_Theseus

Spark最開始打包的是Shark和SharkServer(Spark和Hive的結(jié)合體)。那個時候,這個結(jié)合體包含了大量的Hive代碼。SharkServer就是Hive,它解析HiveQL,在Hive中進行優(yōu)化,讀取Hadoop的輸入格式,到最后Shark甚至在Spark引擎上運行Hadoop風格的MapReduce任務(wù)。這一點在當時來說其實很酷的,因為它提供了一種無需進行任何編程就能使用Spark的方式,HQL做到了。不幸的是,MapReduce和Hive并不能完全融入Spark生態(tài)系統(tǒng),2014年7月,社區(qū)宣布Shark的開發(fā)在Spark1.0的時終止,因為Spark開始轉(zhuǎn)向更多Spark原生的SQL表達式。同時社區(qū)將重心轉(zhuǎn)向原生的Spark SQL的開發(fā),并且對已有的Hive用戶提供過渡方案Hive on Spark來進行將Hive作業(yè)遷移到Spark引擎執(zhí)行。

參考:https://github.com/amplab/shark/wiki/Shark-User-Guidehttps://databricks.com/blog/2014/07/01/shark-spark-sql-hive-on-spark-and-the-future-of-sql-on-spark.html

Spark引入SchemaRDDs,Dataframes和DataSets來表示分布式數(shù)據(jù)集。有了這些,一個名為Catalyst的全新Spark原生優(yōu)化引擎引入到Spark,它是一個Tree Manipulation Framework,為從GraphFrames到Structured Streaming的所有查詢優(yōu)化提供依據(jù)。Catalyst的出現(xiàn)意味著開始丟棄MapReduce風格的作業(yè)執(zhí)行,而是可以構(gòu)建和運行Spark優(yōu)化的執(zhí)行計劃。此外,Spark發(fā)布了一個新的API,它允許我們構(gòu)建名為“DataSources”的Spark-Aware接口。DataSources的靈活性結(jié)束了Spark對Hadoop輸入格式的依賴(盡管它們?nèi)允苤С郑?。DataSource可以直接訪問Spark生成的查詢計劃,并執(zhí)行謂詞下推和其他優(yōu)化。

Hive Parser開始被Spark Parser替代,Spark SQL仍然支持HQL,但語法已經(jīng)大大擴展。Spark SQL現(xiàn)在可以運行所有TPC-DS查詢,以及一系列Spark特定的擴展。(在開發(fā)過程中有一段時間你必須在HiveContext和SqlContext之間進行選擇,兩者都有不同的解析器,但我們不再討論它了。今天所有請求都以SparkSession開頭)。現(xiàn)在Spark幾乎沒有剩下Hive代碼。雖然Sql Thrift Server仍然構(gòu)建在HiveServer2代碼上,但幾乎所有的內(nèi)部實現(xiàn)都是完全Spark原生的。

2

Spark Thrift Server介紹

Thrift Server是Spark提供的一種JDBC/ODBC訪問Spark SQL的服務(wù),它是基于Hive1.2.1的HiveServer2實現(xiàn)的,只是底層的SQL執(zhí)行改為了Spark,同時是使用spark submit啟動的服務(wù)。同時通過Spark Thrift JDBC/ODBC接口也可以較為方便的直接訪問同一個Hadoop集群中的Hive表,通過配置Thrift服務(wù)指向連接到Hive的metastore服務(wù)即可。

如何理解 SQL及Thrift

參考:http://spark.apache.org/docs/latest/sql-distributed-sql-engine.html#running-the-thrift-jdbcodbc-server

如何理解 SQL及Thrift

3

Spark Thrift的缺陷

1.不支持用戶模擬,即Thrift Server并不能以提交查詢的用戶取代啟動Thrift Server的用戶來執(zhí)行查詢語句,具體對應(yīng)到Hive的hive.server2.enable.doAs參數(shù)不支持。參考:

https://issues.apache.org/jira/browse/SPARK-5159https://issues.apache.org/jira/browse/SPARK-11248https://issues.apache.org/jira/browse/SPARK-21918

2.因為上述第一點不支持用戶模擬,導(dǎo)致任何查詢都是同一個用戶,所有沒辦法控制Spark SQL的權(quán)限。

3.單點問題,所有Spark SQL查詢都走唯一一個Spark Thrift節(jié)點上的同一個Spark Driver,任何故障都會導(dǎo)致這個唯一的Spark Thrift節(jié)點上的所有作業(yè)失敗,從而需要重啟Spark Thrift Server。

4.并發(fā)差,上述第三點原因,因為所有的查詢都要通過一個Spark Driver,導(dǎo)致這個Driver是瓶頸,于是限制了Spark SQL作業(yè)的并發(fā)度。

因為以上限制,主要是安全性上的(即上面描述的第一和第二點),所以CDH的企業(yè)版在打包Spark的時候?qū)park Thrift服務(wù)并沒有打包。如果用戶要在CDH中使用Spark Thrift服務(wù),則需要自己打包或單獨添加這個服務(wù),但Cloudera官方并不會提供支持服務(wù)??梢詤⒖既缦耲ira:

https://issues.cloudera.org/browse/DISTRO-817

關(guān)于Spark Thrift的缺陷,也可以參考網(wǎng)易的描述:

如何理解 SQL及Thrift

所以網(wǎng)易才自己做了一個Thrift服務(wù)取名Kyuubi,F(xiàn)ayson在后面的文章中會用到,參考:

http://blog.itpub.net/31077337/viewspace-2212906/

4

Spark Thrift在現(xiàn)有CDH5中的使用

從CDH5.10到最新的CDH5.16.1,都支持同時安裝Spark1.6以及最新的Spark2.x,Spark2具體包含從Spark2.0到最新的Spark2.4都可以安裝到CDH5中。具體可以參考Cloudera官網(wǎng)的說明:

https://www.cloudera.com/documentation/spark2/latest/topics/spark2_requirements.html#cdh_versions

如何理解 SQL及Thrift

在CDH5中通過自己單獨安裝的方式運行Thrift服務(wù)現(xiàn)在已經(jīng)調(diào)通并在使用的是如下版本組合:

1.在CDH5中安裝Spark1.6的Thrift服務(wù),參考《0079-如何在CDH中啟用Spark Thrift》

2.在CDH5中安裝Spark2.1的Thrift服務(wù),參考《0280-如何在Kerberos環(huán)境下的CDH集群部署Spark2.1的Thrift及spark-sql客戶端》

如何理解 SQL及Thrift

從Spark2.2開始到最新的Spark2.4,因為變化較大,不能夠采用上述兩種辦法直接替換jar包的方式實現(xiàn),更多的依賴問題導(dǎo)致需要重新編譯或者修改更多的東西才能在CDH5中使用最新的Spark2.4的Thrift。

看完上述內(nèi)容,你們對如何理解 SQL及Thrift有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


本文標題:如何理解SQL及Thrift
地址分享:http://weahome.cn/article/gpgeod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部