如何解密SparkStreaming

這篇文章主要介紹“如何解密Spark Streaming”,在日常操作中,相信很多人在如何解密Spark Streaming問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何解密Spark Streaming”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出嶧城免費(fèi)做網(wǎng)站回饋大家。

1,解密Spark Streaming Job架構(gòu)和運(yùn)行機(jī)制

 先通過(guò)運(yùn)行在線單詞統(tǒng)計(jì)這個(gè)例子,觀察Spark Streaming在控制臺(tái)上輸出的日志信息。

以下代碼為在9999端口監(jiān)聽(tīng)客戶端連接請(qǐng)求,然后不斷向客戶端發(fā)送單詞。

如何解密Spark Streaming

如何解密Spark Streaming

先啟動(dòng)SocketServer,然后在啟動(dòng)SparkStreaming在線統(tǒng)計(jì)單詞的程序,代碼如下

如何解密Spark Streaming

如何解密Spark Streaming

如何解密Spark Streaming

如何解密Spark Streaming

運(yùn)行過(guò)程總結(jié)如下

1,StreamingContext啟動(dòng)后會(huì)ReceiverTracker,根據(jù)創(chuàng)建時(shí)指定的batchDuration時(shí)間,啟動(dòng)RecurringTimer定時(shí)器,間隔Interval發(fā)送JobGenerator消息,會(huì)啟動(dòng)JobGenerator和JobScheduler和BlockGenerator。

2,ReceiverTracker接收到Receiver(Stream 0)的注冊(cè)消息,然后RecevierSupervisorImpl啟動(dòng)Receiver來(lái)接收數(shù)據(jù)。

3,SocketServer連接到localhost:9999開(kāi)始接收數(shù)據(jù),將接收到的數(shù)據(jù)通過(guò)BlockGenerator存放到BlockManager中。

4,JobScheduler接收到定期發(fā)送的JobGenerator消息后,提交一個(gè)Job,DStreamGraph從ReceiverTracker中獲取數(shù)據(jù)生成RDD,DAGScheduler調(diào)度Job的執(zhí)行,讓TaskSchedulerImpl向Executor發(fā)送TaskSet,讓Executor執(zhí)行。

5,Task運(yùn)行完后將結(jié)果發(fā)送給Driver,DAGScheduler和JbScheduler打印Job完成和耗時(shí)信息,最后在控制臺(tái)輸出單詞統(tǒng)計(jì)結(jié)果。

可以看到隨著時(shí)間的流逝會(huì)有不斷的Job生成并且運(yùn)行,那么,Spark Streaming中Job是如何生成的?

在StreamingContext調(diào)用start方法的內(nèi)部其實(shí)是會(huì)啟動(dòng)JobScheduler的start方法,進(jìn)行消息循環(huán),在JobScheduler的start內(nèi)部會(huì)構(gòu)造JobGenerator和ReceiverTracker,并且調(diào)用JobGenerator和ReceiverTracker的start方法

    1,JobGenerator啟動(dòng)后不斷的根據(jù)batchDuration生成一個(gè)個(gè)的Job

    2,ReceiverTracker啟動(dòng)后首先在Spark集群中啟動(dòng)Receiver(其實(shí)在Executor中先啟動(dòng)ReceiverSupervisor)在Receiver接收到數(shù)據(jù)后會(huì)通過(guò)ReceiverSupervisor將數(shù)據(jù)存儲(chǔ)到Executor的BlockManager中,并且把數(shù)據(jù)的Metadata信息發(fā)送給Driver的ReceiverTracker,在ReceiverTracker內(nèi)部通過(guò)ReceivedBlockTracker來(lái)管理接收到的元數(shù)據(jù)信息

每個(gè)BatchInterval會(huì)產(chǎn)生一個(gè)具體的Job,其實(shí)這里的Job不是SparkCore中的Job,它只是基于DStreamGraph而生成的RDD的DAG而已,從Java角度講,相等于Runnable接口實(shí)例,此時(shí)要向運(yùn)行Job需要提交給JobScheduler,在JobScheduler中通過(guò)線程池中單獨(dú)的線程

來(lái)提交Job到集群運(yùn)行(其實(shí)是在線程中基于RDD的Action觸發(fā)真正的作業(yè)的運(yùn)行)

如何解密Spark Streaming

為什么使用線程池?

1,作業(yè)不斷生成,所以為了提升效率,我們需要線程池。這和Executor中通過(guò)線程池執(zhí)行Task有異曲同工之妙

2,有可能設(shè)置了Job的FAIR公平調(diào)度的方式,這個(gè)時(shí)候也需要多線程的支持

2,解密Spark Streaming容錯(cuò)架構(gòu)和運(yùn)行機(jī)制

容錯(cuò)分為Driver級(jí)別的容錯(cuò)和Executor級(jí)別的容錯(cuò)。

在Executor級(jí)別的容錯(cuò)具體為接收數(shù)據(jù)的安全性和任務(wù)執(zhí)行的安全性。在接收數(shù)據(jù)安全性方面,一種方式是Spark Streaming接收到數(shù)據(jù)默認(rèn)為MEMORY_AND_DISK_2的方式,在兩臺(tái)機(jī)器的內(nèi)存中,如果一臺(tái)機(jī)器上的Executor掛了,立即切換到另一臺(tái)機(jī)器上的Executor,這種方式一般情況下非常可靠且沒(méi)有切換時(shí)間。另外一種方式是WAL(Write Ahead Log),在數(shù)據(jù)到來(lái)時(shí)先通過(guò)WAL機(jī)制將數(shù)據(jù)進(jìn)行日志記錄,如果有問(wèn)題則從日志記錄中恢復(fù),然后再把數(shù)據(jù)存到Executor中,再進(jìn)行其他副本的復(fù)制,這種方式對(duì)性能有影響。在生產(chǎn)環(huán)境中一般使用Kafka存儲(chǔ),Spark Streaming接收到數(shù)據(jù)丟失時(shí)可以從Kafka中回放。在任務(wù)執(zhí)行的安全性方面,靠RDD的容錯(cuò)。

在Driver級(jí)別的容錯(cuò)具體為DAG生成的模板,即DStreamGraph,RecevierTracker中存儲(chǔ)的元數(shù)據(jù)信息和JobScheduler中存儲(chǔ)的Job進(jìn)行的進(jìn)度情況等信息,只要通過(guò)checkpoint就可以了,每個(gè)Job生成之前進(jìn)行checkpoint,在Job生成之后再進(jìn)行checkpoint,如果出錯(cuò)的話就從checkpoint中恢復(fù)。

到此,關(guān)于“如何解密Spark Streaming”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

新聞標(biāo)題:如何解密SparkStreaming
分享地址:http://muchs.cn/article46/ppjehg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司靜態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站響應(yīng)式網(wǎng)站、網(wǎng)站營(yíng)銷(xiāo)

廣告

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

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