本期內(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)圖:
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)行幾乎是一致的:
SparkStreaming Job在運(yùn)行的時(shí)候,首先會(huì)生成DStream的Graph,在特定的時(shí)間將DStream Graph轉(zhuǎn)換成RDD Graph。然后再去運(yùn)行RDD的job 。如下圖:
如果我們把RDD看成一個(gè)空間上的維度,那么DStream就是在RDD上加入了時(shí)間維度的時(shí)空維度。
我們可以想象一下,在一個(gè)二維空間中,X軸是時(shí)間,Y軸是對RDD的操作,也就是所謂的RDD的依賴關(guān)系構(gòu)成的整個(gè)job的邏輯。隨著時(shí)間的進(jìn)行,會(huì)生成一個(gè)個(gè)的job實(shí)例。
所以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)