91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解密Spark Streaming

發布時間:2021-12-16 15:20:44 來源:億速云 閱讀:113 作者:iii 欄目:云計算

這篇文章主要介紹“如何解密Spark Streaming”,在日常操作中,相信很多人在如何解密Spark Streaming問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何解密Spark Streaming”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1,解密Spark Streaming Job架構和運行機制

 先通過運行在線單詞統計這個例子,觀察Spark Streaming在控制臺上輸出的日志信息。

以下代碼為在9999端口監聽客戶端連接請求,然后不斷向客戶端發送單詞。

如何解密Spark Streaming

如何解密Spark Streaming

先啟動SocketServer,然后在啟動SparkStreaming在線統計單詞的程序,代碼如下

如何解密Spark Streaming

如何解密Spark Streaming

如何解密Spark Streaming

如何解密Spark Streaming

運行過程總結如下

1,StreamingContext啟動后會ReceiverTracker,根據創建時指定的batchDuration時間,啟動RecurringTimer定時器,間隔Interval發送JobGenerator消息,會啟動JobGenerator和JobScheduler和BlockGenerator。

2,ReceiverTracker接收到Receiver(Stream 0)的注冊消息,然后RecevierSupervisorImpl啟動Receiver來接收數據。

3,SocketServer連接到localhost:9999開始接收數據,將接收到的數據通過BlockGenerator存放到BlockManager中。

4,JobScheduler接收到定期發送的JobGenerator消息后,提交一個Job,DStreamGraph從ReceiverTracker中獲取數據生成RDD,DAGScheduler調度Job的執行,讓TaskSchedulerImpl向Executor發送TaskSet,讓Executor執行。

5,Task運行完后將結果發送給Driver,DAGScheduler和JbScheduler打印Job完成和耗時信息,最后在控制臺輸出單詞統計結果。

可以看到隨著時間的流逝會有不斷的Job生成并且運行,那么,Spark Streaming中Job是如何生成的?

在StreamingContext調用start方法的內部其實是會啟動JobScheduler的start方法,進行消息循環,在JobScheduler的start內部會構造JobGenerator和ReceiverTracker,并且調用JobGenerator和ReceiverTracker的start方法

    1,JobGenerator啟動后不斷的根據batchDuration生成一個個的Job

    2,ReceiverTracker啟動后首先在Spark集群中啟動Receiver(其實在Executor中先啟動ReceiverSupervisor)在Receiver接收到數據后會通過ReceiverSupervisor將數據存儲到Executor的BlockManager中,并且把數據的Metadata信息發送給Driver的ReceiverTracker,在ReceiverTracker內部通過ReceivedBlockTracker來管理接收到的元數據信息

每個BatchInterval會產生一個具體的Job,其實這里的Job不是SparkCore中的Job,它只是基于DStreamGraph而生成的RDD的DAG而已,從Java角度講,相等于Runnable接口實例,此時要向運行Job需要提交給JobScheduler,在JobScheduler中通過線程池中單獨的線程

來提交Job到集群運行(其實是在線程中基于RDD的Action觸發真正的作業的運行)

如何解密Spark Streaming

為什么使用線程池?

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

2,有可能設置了Job的FAIR公平調度的方式,這個時候也需要多線程的支持

2,解密Spark Streaming容錯架構和運行機制

容錯分為Driver級別的容錯和Executor級別的容錯。

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

在Driver級別的容錯具體為DAG生成的模板,即DStreamGraph,RecevierTracker中存儲的元數據信息和JobScheduler中存儲的Job進行的進度情況等信息,只要通過checkpoint就可以了,每個Job生成之前進行checkpoint,在Job生成之后再進行checkpoint,如果出錯的話就從checkpoint中恢復。

到此,關于“如何解密Spark Streaming”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

交口县| 衢州市| 精河县| 大宁县| 道真| 湖北省| 南召县| 伊宁县| 分宜县| 陆良县| 正定县| 鹤峰县| 广昌县| 大渡口区| 水富县| 全州县| 固镇县| 石楼县| 望都县| 博罗县| 灵石县| 攀枝花市| 张北县| 仪陇县| 胶南市| 文安县| 府谷县| 应城市| 刚察县| 昆山市| 咸丰县| 河东区| 南康市| 措美县| 临清市| 白河县| 海南省| 泸水县| 镇康县| 成都市| 长汀县|