第2課:SparkStreaming透徹理解三板斧之二:解密SparkStreaming運(yùn)行機(jī)制和架構(gòu)

本期內(nèi)容:

10多年的船山網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整船山建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“船山網(wǎng)站設(shè)計(jì)”,“船山網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

  • 解密Spark Streaming 運(yùn)行機(jī)制

  • 解密Spark Streaming 框架

Spark Streaming是Spark的一個(gè)子框架,但是它更像是運(yùn)行在Spark Core上的一個(gè)應(yīng)用程序。Spark Streaming在啟動(dòng)時(shí)運(yùn)行了很多的job,并且job之間相互配合。

Job圍繞了兩個(gè)方面:

1. 對輸入數(shù)據(jù)流進(jìn)行計(jì)算的Job

2. 框架自身運(yùn)行需要的Job,例如Receiver啟動(dòng)。

Spark Streaming本身就是一個(gè)非常復(fù)雜的應(yīng)用程序,如果你對SparkStreaming了如指掌,那么你將非常輕松的編寫任意的應(yīng)用程序。

我們看一下Spark的架構(gòu)圖:

第2課:SparkStreaming 透徹理解三板斧之二:解密SparkStreaming運(yùn)行機(jī)制和架構(gòu)

Spark core上面有4個(gè)流行的框架:SparkSQL、流計(jì)算、機(jī)器學(xué)習(xí)、圖計(jì)算

除了流計(jì)算,其他的框架大多都是在SparkCore上對一些算法或者接口進(jìn)行了高層的封裝。例如SparkSQL 封裝了SQL語法,主要功能就是將SQL語法解析成SparkCore的底層API。而機(jī)器學(xué)習(xí)則是封裝了很多的數(shù)學(xué)向量及算法。GraphX目前也沒有太大的更新。

只有對SparkStreaming徹底了解,才能對提升我們寫應(yīng)用程序有很大的幫助。

基于Spark Core的時(shí)候,都是基于RDD編程,而基于SparkStreaming則是基于DStream編程。DStream就是在RDD的基礎(chǔ)上,加上了時(shí)間維度:

private[streaming] var generatedRDDs = new HashMap[Time, RDD[T]] ()

DStream的compute需要傳入一個(gè)時(shí)間參數(shù),通過時(shí)間獲取相應(yīng)的RDD,然后再對RDD進(jìn)行計(jì)算

/** Method that generates a RDD for the given time */
def compute(validTime: Time): Option[RDD[T]]

我們查看SparkStreaming的運(yùn)行日志,就可以看出和RDD的運(yùn)行幾乎是一致的:

第2課:SparkStreaming 透徹理解三板斧之二:解密SparkStreaming運(yùn)行機(jī)制和架構(gòu)

SparkStreaming Job在運(yùn)行的時(shí)候,首先會(huì)生成DStream的Graph,在特定的時(shí)間將DStream Graph轉(zhuǎn)換成RDD Graph。然后再去運(yùn)行RDD的job 。如下圖:

第2課:SparkStreaming 透徹理解三板斧之二:解密SparkStreaming運(yùn)行機(jī)制和架構(gòu)

如果我們把RDD看成一個(gè)空間上的維度,那么DStream就是在RDD上加入了時(shí)間維度的時(shí)空維度。

第2課:SparkStreaming 透徹理解三板斧之二:解密SparkStreaming運(yùn)行機(jī)制和架構(gòu)

我們可以想象一下,在一個(gè)二維空間中,X軸是時(shí)間,Y軸是對RDD的操作,也就是所謂的RDD的依賴關(guān)系構(gòu)成的整個(gè)job的邏輯。隨著時(shí)間的進(jìn)行,會(huì)生成一個(gè)個(gè)的job實(shí)例。

第2課:SparkStreaming 透徹理解三板斧之二:解密SparkStreaming運(yùn)行機(jī)制和架構(gòu)所以SparkStreaming需要提供如下的功能:

  • 需要RDD Graph生成的模板DStreamGraph

  • 需要基于時(shí)間的job控制器

  • 需要InputStream和OutputStream代表數(shù)據(jù)的輸入和輸出

  • 將具體的job提交到Spark Cluster上,因?yàn)镾parkStreaming是不斷的在運(yùn)行job,更容易出現(xiàn)問題,所以容錯(cuò)就至關(guān)重要(單個(gè)job的容錯(cuò)是基于Sparkcore的,SparkStreaming還要提供自己框架的容錯(cuò)功能)。

  • 事務(wù)處理,數(shù)據(jù)一定會(huì)被處理,并且只會(huì)被處理一次。也就是說每次處理數(shù)據(jù)的時(shí)候,要知道數(shù)據(jù)的邊界。特別是出現(xiàn)崩潰的情況下。

備注:

1、DT大數(shù)據(jù)夢工廠微信公眾號DT_Spark 
2、IMF晚8點(diǎn)大數(shù)據(jù)實(shí)戰(zhàn)YY直播頻道號:68917580
3、新浪微博: http://www.weibo.com/ilovepains

本文標(biāo)題:第2課:SparkStreaming透徹理解三板斧之二:解密SparkStreaming運(yùn)行機(jī)制和架構(gòu)
文章地址:http://muchs.cn/article28/geeccp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、自適應(yīng)網(wǎng)站、外貿(mào)建站、做網(wǎng)站、網(wǎng)站策劃、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)