日本久久99,色婷婷我要去我去也97,久久久久人妻精品一区三寸蜜桃,91人妻在线超碰,亚洲欧洲综合av在线

Livy:基于Apache Spark的REST服務(wù)
Livy是一個(gè)基于Spark的開(kāi)源REST服務(wù),它能夠通過(guò)REST的方式將代碼片段或是序列化的二進(jìn)制代碼提交到Spark集群中去執(zhí)行。它提供了以下這些基本功能:1.提交Scala、Python或是R代碼片段到遠(yuǎn)端的Spark集群上執(zhí)行;2.提交Java、Scala、Python所編寫的Spark作業(yè)到遠(yuǎn)端的Spark集群上執(zhí)行;3.提交批處理應(yīng)用在集群中運(yùn)行。
作者:CSDN云計(jì)算
來(lái)源:CSDN云計(jì)算
2017-07-04 14:15:00

Apache Spark提供的兩種基于命令行的處理交互方式雖然足夠靈活,但在企業(yè)應(yīng)用中面臨諸如部署、安全等問(wèn)題。為此本文引入Livy這樣一個(gè)基于Apache Spark的REST服務(wù),它不僅以REST的方式代替了Spark傳統(tǒng)的處理交互方式,同時(shí)也提供企業(yè)應(yīng)用中不可忽視的多用戶,安全,以及容錯(cuò)的支持。

背景

Apache Spark作為當(dāng)前最為流行的開(kāi)源大數(shù)據(jù)計(jì)算框架,廣泛應(yīng)用于數(shù)據(jù)處理和分析應(yīng)用,它提供了兩種方式來(lái)處理數(shù)據(jù):一是交互式處理,比如用戶使用spark-shell或是pyspark腳本啟動(dòng)Spark應(yīng)用程序,伴隨應(yīng)用程序啟動(dòng)的同時(shí)Spark會(huì)在當(dāng)前終端啟動(dòng)REPL(Read–Eval–Print Loop)來(lái)接收用戶的代碼輸入,并將其編譯成Spark作業(yè)提交到集群上去執(zhí)行;二是批處理,批處理的程序邏輯由用戶實(shí)現(xiàn)并編譯打包成jar包,spark-submit腳本啟動(dòng)Spark應(yīng)用程序來(lái)執(zhí)行用戶所編寫的邏輯,與交互式處理不同的是批處理程序在執(zhí)行過(guò)程中用戶沒(méi)有與Spark進(jìn)行任何的交互。

兩種處理交互方式雖然看起來(lái)完全不一樣,但是都需要用戶登錄到Gateway節(jié)點(diǎn)上通過(guò)腳本啟動(dòng)Spark進(jìn)程。這樣的方式會(huì)有什么問(wèn)題嗎?

1.首先將資源的使用和故障發(fā)生的可能性集中到了這些Gateway節(jié)點(diǎn)。由于所有的Spark進(jìn)程都是在Gateway節(jié)點(diǎn)上啟動(dòng)的,這勢(shì)必會(huì)增加Gateway節(jié)點(diǎn)的資源使用負(fù)擔(dān)和故障發(fā)生的可能性,同時(shí)Gateway節(jié)點(diǎn)的故障會(huì)帶來(lái)單點(diǎn)問(wèn)題,造成Spark程序的失敗。

2.其次難以管理、審計(jì)以及與已有的權(quán)限管理工具的集成。由于Spark采用腳本的方式啟動(dòng)應(yīng)用程序,因此相比于Web方式少了許多管理、審計(jì)的便利性,同時(shí)也難以與已有的工具結(jié)合,如Apache Knox。

3.同時(shí)也將Gateway節(jié)點(diǎn)上的部署細(xì)節(jié)以及配置不可避免地暴露給了登陸用戶。

為了避免上述這些問(wèn)題,同時(shí)提供原生Spark已有的處理交互方式,并且為Spark帶來(lái)其所缺乏的企業(yè)級(jí)管理、部署和審計(jì)功能,本文將介紹一個(gè)新的基于Spark的REST服務(wù):Livy。

Livy

Livy是一個(gè)基于Spark的開(kāi)源REST服務(wù),它能夠通過(guò)REST的方式將代碼片段或是序列化的二進(jìn)制代碼提交到Spark集群中去執(zhí)行。它提供了以下這些基本功能:

1.提交Scala、Python或是R代碼片段到遠(yuǎn)端的Spark集群上執(zhí)行;

2.提交Java、Scala、Python所編寫的Spark作業(yè)到遠(yuǎn)端的Spark集群上執(zhí)行;

3.提交批處理應(yīng)用在集群中運(yùn)行。

從Livy所提供的基本功能可以看到Livy涵蓋了原生Spark所提供的兩種處理交互方式。與原生Spark不同的是,所有操作都是通過(guò)REST的方式提交到Livy服務(wù)端上,再由Livy服務(wù)端發(fā)送到不同的Spark集群上去執(zhí)行。說(shuō)到這里我們首先來(lái)了解一下Livy的架構(gòu)。

Livy的基本架構(gòu)

Livy是一個(gè)典型的REST服務(wù)架構(gòu),它一方面接受并解析用戶的REST請(qǐng)求,轉(zhuǎn)換成相應(yīng)的操作;另一方面它管理著用戶所啟動(dòng)的所有Spark集群。具體架構(gòu)可見(jiàn)圖1。

大數(shù)據(jù)技術(shù)1

圖1 Livy的基本架構(gòu)

用戶可以以REST請(qǐng)求的方式通過(guò)Livy啟動(dòng)一個(gè)新的Spark集群,Livy將每一個(gè)啟動(dòng)的Spark集群稱之為一個(gè)會(huì)話(session),一個(gè)會(huì)話是由一個(gè)完整的Spark集群所構(gòu)成的,并且通過(guò)RPC協(xié)議在Spark集群和Livy服務(wù)端之間進(jìn)行通信。根據(jù)處理交互方式的不同,Livy將會(huì)話分成了兩種類型:

1.交互式會(huì)話(interactive session),這與Spark中的交互式處理相同,交互式會(huì)話在其啟動(dòng)后可以接收用戶所提交的代碼片段,在遠(yuǎn)端的Spark集群上編譯并執(zhí)行;

2.批處理會(huì)話(batch session),用戶可以通過(guò)Livy以批處理的方式啟動(dòng)Spark應(yīng)用,這樣的一個(gè)方式在Livy中稱之為批處理會(huì)話,這與Spark中的批處理是相同的。

可以看到,Livy所提供的核心功能與原生Spark是相同的,它提供了兩種不同的會(huì)話類型來(lái)代替Spark中兩類不同的處理交互方式。接下來(lái)我們具體了解一下這兩種類型的會(huì)話。

交互式會(huì)話(Interactive Session)

使用交互式會(huì)話與使用Spark所自帶的spark-shell、pyspark或sparkR相類似,它們都是由用戶提交代碼片段給REPL,由REPL來(lái)編譯成Spark作業(yè)并執(zhí)行。它們的主要不同點(diǎn)是spark-shell會(huì)在當(dāng)前節(jié)點(diǎn)上啟動(dòng)REPL來(lái)接收用戶的輸入,而Livy交互式會(huì)話則是在遠(yuǎn)端的Spark集群中啟動(dòng)REPL,所有的代碼、數(shù)據(jù)都需要通過(guò)網(wǎng)絡(luò)來(lái)傳輸。

我們接下來(lái)看看如何使用交互式會(huì)話。

創(chuàng)建交互式會(huì)話

POST /sessions

大數(shù)據(jù)技術(shù)2

使用交互式會(huì)話的前提是需要先創(chuàng)建會(huì)話。當(dāng)我們提交請(qǐng)求創(chuàng)建交互式會(huì)話時(shí),我們需要指定會(huì)話的類型(“kind”),比如“spark”,Livy會(huì)根據(jù)我們所指定的類型來(lái)啟動(dòng)相應(yīng)的REPL,當(dāng)前Livy可支持spark、pyspark或是sparkr三種不同的交互式會(huì)話類型以滿足不同語(yǔ)言的需求。

當(dāng)創(chuàng)建完會(huì)話后,Livy會(huì)返回給我們一個(gè)JSON格式的數(shù)據(jù)結(jié)構(gòu)表示當(dāng)前會(huì)話的所有信息:

大數(shù)據(jù)技術(shù)3

其中需要我們關(guān)注的是會(huì)話id,id代表了此會(huì)話,所有基于該會(huì)話的操作都需要指明其id。

提交代碼

POST /sessions/{sessionId}/statements

大數(shù)據(jù)技術(shù)4

創(chuàng)建完交互式會(huì)話后我們就可以提交代碼到該會(huì)話上去執(zhí)行。與創(chuàng)建會(huì)話相同的是,提交代碼同樣會(huì)返回給我們一個(gè)id用來(lái)標(biāo)識(shí)該次請(qǐng)求,我們可以用id來(lái)查詢?cè)摱未a執(zhí)行的結(jié)果。

查詢執(zhí)行結(jié)果

GET /sessions/{sessionId}/statements/{statementId}

大數(shù)據(jù)技術(shù)5

Livy的REST API設(shè)計(jì)為非阻塞的方式,當(dāng)提交代碼請(qǐng)求后Livy會(huì)立即返回該請(qǐng)求id而并非阻塞在該次請(qǐng)求上直到執(zhí)行完成,因此用戶可以使用該id來(lái)反復(fù)輪詢結(jié)果,當(dāng)然只有當(dāng)該段代碼執(zhí)行完畢后用戶的查詢請(qǐng)求才能得到正確結(jié)果。

當(dāng)然Livy交互式會(huì)話還提供許多不同的REST API來(lái)操作會(huì)話和代碼,在這就不一一贅述了。

使用編程API

在交互式會(huì)話模式中,Livy不僅可以接收用戶提交的代碼,而且還可以接收序列化的Spark作業(yè)。為此Livy提供了一套編程式的API供用戶使用,用戶可以像使用原生Spark API那樣使用Livy提供的API編寫Spark作業(yè),Livy會(huì)將用戶編寫的Spark作業(yè)序列化并發(fā)送到遠(yuǎn)端Spark集群中執(zhí)行。表1就是使用Spark API所編寫PI程序與使用Livy API所編寫的程序的比較。

大數(shù)據(jù)技術(shù)6

表1  使用Spark API所編寫PI程序與使用Livy API所編寫程序的比較

可以看到除了入口函數(shù)不同,其核心邏輯完全一致,因此用戶可以很方便地將已有的Spark作業(yè)遷移到Livy上。

Livy交互式會(huì)話是Spark交互式處理基于HTTP的實(shí)現(xiàn)。有了Livy的交互式會(huì)話,用戶無(wú)需登錄到Gateway節(jié)點(diǎn)上去啟動(dòng)Spark進(jìn)程并執(zhí)行代碼。以REST的方式進(jìn)行交互式處理提供給用戶豐富的選擇,也方便了用戶的使用,更為重要的是它方便了運(yùn)維的管理。

批處理會(huì)話(Batch Session)

在Spark應(yīng)用中有一大類應(yīng)用是批處理應(yīng)用,這些應(yīng)用在運(yùn)行期間無(wú)須與用戶進(jìn)行交互,最典型的就是Spark Streaming流式應(yīng)用。用戶會(huì)將業(yè)務(wù)邏輯編譯打包成jar包,并通過(guò)spark-submit啟動(dòng)Spark集群來(lái)執(zhí)行業(yè)務(wù)邏輯:

大數(shù)據(jù)技術(shù)7

Livy也為用戶帶來(lái)相同的功能,用戶可以通過(guò)REST的方式來(lái)創(chuàng)建批處理應(yīng)用:

大數(shù)據(jù)技術(shù)8

通過(guò)用戶所指定的“className”和“file”,Livy會(huì)啟動(dòng)Spark集群來(lái)運(yùn)行該應(yīng)用,這樣的一種方式就稱為批處理會(huì)話。

至此我們簡(jiǎn)單介紹了Livy的兩種會(huì)話類型,與它相對(duì)應(yīng)的就是Spark的兩種處理交互方式,因此可以說(shuō)Livy以REST的方式提供了Spark所擁有的兩種交互處理方式。

企業(yè)級(jí)特性

前面我們介紹了Livy的核心功能,相比于核心功能的完整性,Livy的企業(yè)級(jí)特性則更體現(xiàn)了其相比于原生Spark處理交互方式的優(yōu)勢(shì)。本章節(jié)將介紹Livy幾個(gè)關(guān)鍵的企業(yè)特性。

多用戶支持

假定用戶tom向Livy服務(wù)端發(fā)起REST請(qǐng)求啟動(dòng)一個(gè)新的會(huì)話,而Livy服務(wù)端則是由用戶livy啟動(dòng)的,這個(gè)時(shí)候所創(chuàng)建出來(lái)Spark集群用戶是誰(shuí)呢,會(huì)是用戶tom還是livy?在默認(rèn)情況下這個(gè)Spark集群的用戶是livy。這會(huì)帶來(lái)訪問(wèn)權(quán)限的問(wèn)題:用戶tom無(wú)法訪問(wèn)其擁有權(quán)限的資源,而相對(duì)的是他卻可以訪問(wèn)用戶livy所擁有的資源。

為了解決這個(gè)問(wèn)題Livy引入了Hadoop中的代理用戶(proxy user)模式,代理用戶模式廣泛使用于多用戶的環(huán)境,如HiveServer2。在此模式中超級(jí)用戶可以代理成普通用戶去訪問(wèn)資源,并擁有普通用戶相應(yīng)的權(quán)限。開(kāi)啟了代理用戶模式后,以用戶tom所創(chuàng)建的會(huì)話所啟動(dòng)的Spark集群用戶就會(huì)是tom。

大數(shù)據(jù)技術(shù)9

圖2  Livy多用戶支持

為了使用此功能用戶需要配置“livy.impersonation.enabled”,同時(shí)需要在Hadoop中將Livy服務(wù)端進(jìn)程的用戶配置為Hadoop proxyuser 。當(dāng)然還會(huì)有一些Livy的額外配置就不在這展開(kāi)了。

有了代理用戶模式的支持,Livy就能真正做到對(duì)多用戶的支持,不同用戶啟動(dòng)的會(huì)話會(huì)以相應(yīng)的用戶去訪問(wèn)資源。

端到端安全

在企業(yè)應(yīng)用中另一個(gè)非常關(guān)鍵的特性是安全性。一個(gè)完整的Livy服務(wù)中有哪些點(diǎn)是要有安全考慮的呢?

客戶端認(rèn)證

當(dāng)用戶tom發(fā)起REST請(qǐng)求訪問(wèn)Livy服務(wù)端的時(shí)候,我們?nèi)绾沃涝撚脩羰呛戏ㄓ脩裟兀縇ivy采用了基于Kerberos的Spnego認(rèn)證。在Livy服務(wù)端配置Spnego認(rèn)證后,用戶發(fā)起Http請(qǐng)求之前必須先獲得Kerberos認(rèn)證,只有通過(guò)認(rèn)證后才能正確訪問(wèn)Livy服務(wù)端,不然的話Livy服務(wù)端會(huì)返回401錯(cuò)誤。

HTTPS/SSL

那么如何保證客戶端與Livy服務(wù)端之間HTTP傳輸?shù)陌踩阅兀縇ivy使用了標(biāo)準(zhǔn)的SSL來(lái)加密HTTP協(xié)議,以確保傳輸?shù)腍ttp報(bào)文的安全。為此用戶需要配置Livy服務(wù)端SSL相關(guān)的配置已開(kāi)啟此功能。

SASL RPC

除了客戶端和Livy服務(wù)端之間的通信,Livy服務(wù)端和Spark集群之間也存在著網(wǎng)絡(luò)通信,如何確保這兩者之間的通信安全性也是需要考慮的。Livy采用了基于SASL認(rèn)證的RPC通信機(jī)制:當(dāng)Livy服務(wù)端啟動(dòng)Spark集群時(shí)會(huì)產(chǎn)生一個(gè)隨機(jī)字符串用作兩者之間認(rèn)證的秘鑰,只有Livy服務(wù)端和該Spark集群之間才有相同的秘鑰,這樣就保證了只有Livy服務(wù)端才能和該Spark集群進(jìn)行通信,防止匿名的連接試圖與Spark集群通信。

將上述三種安全機(jī)制歸結(jié)起來(lái)就如圖3所示。

大數(shù)據(jù)技術(shù)10

圖3  Livy端到端安全機(jī)制

這樣構(gòu)成了Livy完整的端到端的安全機(jī)制,確保沒(méi)有經(jīng)過(guò)認(rèn)證的用戶,匿名的連接無(wú)法與Livy服務(wù)中的任何一個(gè)環(huán)節(jié)進(jìn)行通信。

失敗恢復(fù)

由于Livy服務(wù)端是單點(diǎn),所有的操作都需要通過(guò)Livy轉(zhuǎn)發(fā)到Spark集群中,如何確保Livy服務(wù)端失效的時(shí)候已創(chuàng)建的所有會(huì)話不受影響,同時(shí)Livy服務(wù)端恢復(fù)過(guò)來(lái)后能夠與已有的會(huì)話重新連接以繼續(xù)使用?

Livy提供了失敗恢復(fù)的機(jī)制,當(dāng)用戶啟動(dòng)會(huì)話的同時(shí)Livy會(huì)在可靠的存儲(chǔ)上記錄會(huì)話相關(guān)的元信息,一旦Livy從失敗中恢復(fù)過(guò)來(lái)它會(huì)試圖讀取相關(guān)的元信息并與Spark集群重新連接。為了使用該特性我們需要配置Livy使其開(kāi)啟此功能:

大數(shù)據(jù)技術(shù)11

失敗恢復(fù)能夠有效地避免因Livy服務(wù)端單點(diǎn)故障造成的所有會(huì)話的不可用,同時(shí)也避免了因Livy服務(wù)端重啟而造成的會(huì)話不必要失效。

總結(jié)

本文從Spark處理交互方式的局限引出了Livy這樣一個(gè)基于Spark的REST服務(wù)。同時(shí)全面介紹了其基本架構(gòu)、核心功能以及企業(yè)級(jí)特性,Livy不僅涵蓋了Spark所提供了所有處理交互方式,同時(shí)又結(jié)合了多種的企業(yè)級(jí)特性,雖然Livy項(xiàng)目現(xiàn)在還處于早期,許多的功能有待增加和改進(jìn),我相信假以時(shí)日Livy必定能成為一個(gè)優(yōu)秀的基于Spark的REST服務(wù)。

【本文為《程序員》原創(chuàng)文章】

關(guān)注中國(guó)IDC圈官方微信:idc-quan或微信號(hào):821496803 我們將定期推送IDC產(chǎn)業(yè)最新資訊

查看心情排行你看到此篇文章的感受是:


  • 支持

  • 高興

  • 震驚

  • 憤怒

  • 無(wú)聊

  • 無(wú)奈

  • 謊言

  • 槍稿

  • 不解

  • 標(biāo)題黨
2022-05-11 11:18:03
云資訊 亞馬遜云科技:在云中打造統(tǒng)一數(shù)據(jù)基礎(chǔ)底座是企業(yè)實(shí)現(xiàn)數(shù)智融合有效途徑
數(shù)據(jù)與智能的統(tǒng)一和融合,意味著數(shù)據(jù)構(gòu)建和實(shí)施項(xiàng)目更加高效,數(shù)據(jù)在兩者之間能夠無(wú)縫流轉(zhuǎn),企業(yè)可以快速具備相關(guān)能力,推動(dòng)自身數(shù)字化轉(zhuǎn)型邁向新的高度。 <詳情>
2022-02-10 09:46:51
大數(shù)據(jù)資訊 抓住大數(shù)據(jù)產(chǎn)業(yè)風(fēng)口 培育數(shù)字經(jīng)濟(jì)新動(dòng)能
《黑龍江省大數(shù)據(jù)產(chǎn)業(yè)發(fā)展規(guī)劃(2021—2025年)》已于近日出臺(tái),明確提出,到2025年大數(shù)據(jù)產(chǎn)業(yè)測(cè)算規(guī)模達(dá)到140億元,建成哈爾濱全國(guó)大數(shù)據(jù)中心重要基地,打造大數(shù)據(jù)新型工業(yè) <詳情>
2022-02-10 08:52:22
5G資訊 中國(guó)5G基站總量占全球60%以上 云計(jì)算、大數(shù)據(jù)帶來(lái)新活力
數(shù)據(jù)顯示,2021年,全國(guó)移動(dòng)通信基站總數(shù)達(dá)996萬(wàn)個(gè),全年凈增65萬(wàn)個(gè)。其中4G基站達(dá)590萬(wàn)個(gè),5G基站為142.5萬(wàn)個(gè),全年新建5G基站超過(guò)65萬(wàn)個(gè)。 <詳情>
2022-01-19 15:27:07
2022-01-17 10:14:00
云資訊 趨勢(shì)丨2022年國(guó)內(nèi)科技十大趨勢(shì):邊緣計(jì)算驅(qū)動(dòng)云行業(yè)步入新流量
基于同樣的邏輯,數(shù)據(jù)量的增長(zhǎng)導(dǎo)致集中式云計(jì)算出現(xiàn)瓶頸,2020年到2030年將會(huì)是邊緣云計(jì)算從興起到繁榮的關(guān)鍵十年。 <詳情>
2021-12-27 15:33:48
市場(chǎng)情報(bào) 閃耀2021電力人工智能與大數(shù)據(jù)論壇,ATEN電力電網(wǎng)解決方案贏得交口稱贊
ATEN電力行業(yè)解決方案包含發(fā)電廠遠(yuǎn)程管控、變電站遠(yuǎn)程監(jiān)控、信通的智能化運(yùn)維以及分布式電力調(diào)度指控中心4個(gè)細(xì)分解決方案,充分滿足不同電力應(yīng)用場(chǎng)景需求。 <詳情>
2021-11-29 09:52:36
大數(shù)據(jù)資訊 大數(shù)據(jù)包括哪些方面
對(duì)于不同模式,不同結(jié)構(gòu)的數(shù)據(jù),我們需要進(jìn)行進(jìn)一步的處理,需要進(jìn)行集成處理或者整合處理。當(dāng)我們將不同的數(shù)據(jù)收集,整理并且轉(zhuǎn)換之后,就可以獲取一個(gè)新的數(shù)據(jù)。這樣在后 <詳情>
2021-11-23 10:36:03
大數(shù)據(jù)資訊 智慧高速大數(shù)據(jù)與系統(tǒng)創(chuàng)新應(yīng)用實(shí)驗(yàn)室落地安徽
智慧高速大數(shù)據(jù)與系統(tǒng)創(chuàng)新應(yīng)用實(shí)驗(yàn)室由交通運(yùn)輸部路網(wǎng)中心負(fù)責(zé)牽頭制定總體規(guī)劃,負(fù)責(zé)提供實(shí)驗(yàn)室課題研究、項(xiàng)目試點(diǎn)所需的全國(guó)路網(wǎng)數(shù)據(jù),協(xié)調(diào)對(duì)接同行業(yè)資源以及相關(guān)研究成 <詳情>
2021-11-22 09:52:00
大數(shù)據(jù)資訊 2020年中國(guó)大數(shù)據(jù)相關(guān)市場(chǎng)增幅領(lǐng)跑全球 未來(lái)10年數(shù)字經(jīng)濟(jì)滲透率將超30%
有報(bào)告預(yù)測(cè)認(rèn)為,在2020年至2024年期間,全球大數(shù)據(jù)技術(shù)與服務(wù)相關(guān)收益將實(shí)現(xiàn)9.6%的復(fù)合年均增長(zhǎng)率,預(yù)計(jì)2024年將達(dá)到2877.7億美元。 <詳情>

CSDN云計(jì)算

閱讀量
閱讀排行榜