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

溫馨提示×

溫馨提示×

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

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

(版本定制)第10課:Spark Streaming源碼解讀

發布時間:2020-07-16 02:18:28 來源:網絡 閱讀:435 作者:Spark_2016 欄目:大數據

本期內容:

    1、數據接收架構設計模式

    2、數據接收源碼徹底研究


1、Receiver接受數據的過程類似于MVC模式:

Receiver,ReceiverSupervisor和Driver的關系相當于Model,Control,View,也就是MVC。

Model就是Receiver,存儲數據Control,就是ReceiverSupervisor,Driver是獲得元數據,也就是View。

(版本定制)第10課:Spark Streaming源碼解讀

2、數據的位置信息會被封裝到RDD里面。

3、Receiver接受數據,交給ReceiverSupervisor去存儲數據。

4、ReceiverTracker是通過發送一個又一個的Job,每個Job只有一個Task,每個Task里面就只有一個ReceiverSupervisor,用這個函數啟動每一個Receiver。


下面我們簡單的看下Receiver啟動流程,應用程序首先通過JobScheduler的start方法來啟動receiverTracker的start方法:

def start(): Unit = synchronized {
if (eventLoop != null) return // scheduler has already been started

logDebug("Starting JobScheduler")
eventLoop = new EventLoop[JobSchedulerEvent]("JobScheduler") {
override protected def onReceive(event: JobSchedulerEvent): Unit = processEvent(event)

override protected def onError(e: Throwable): Unit = reportError("Error in job scheduler", e)
  }
eventLoop.start()

// attach rate controllers of input streams to receive batch completion updates
for {
    inputDStream <- ssc.graph.getInputStreams
    rateController <- inputDStream.rateController
} ssc.addStreamingListener(rateController)

listenerBus.start(ssc.sparkContext)
receiverTracker = new ReceiverTracker(ssc)
inputInfoTracker = new InputInfoTracker(ssc)
receiverTracker.start() //receiver啟動
jobGenerator.start()
  logInfo("Started JobScheduler")
}

通過調用receiverTracker.start()方法來進行一系列的操作:

/** Start the endpoint and receiver execution thread. */
def start(): Unit = synchronized {
if (isTrackerStarted) {
throw new SparkException("ReceiverTracker already started")
  }

if (!receiverInputStreams.isEmpty) {
endpoint = ssc.env.rpcEnv.setupEndpoint(
"ReceiverTracker", new ReceiverTrackerEndpoint(ssc.env.rpcEnv)) //Rpc消息通信,獲取receiver的狀態
if (!skipReceiverLaunch) launchReceivers() //啟動receiver
    logInfo("ReceiverTracker started")
trackerState = Started
}
}

下面通過畫圖簡單的描述下Receiver啟動的內部機制:

(版本定制)第10課:Spark Streaming源碼解讀


參考博客:http://blog.csdn.net/hanburgud/article/details/51471047

                 http://lqding.blog.51cto.com/9123978/1774426

向AI問一下細節

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

AI

额尔古纳市| 中方县| 尼玛县| 乌审旗| 紫金县| 东丽区| 宁强县| 镇巴县| 泰兴市| 宿州市| 南木林县| 揭西县| 宜丰县| 阳高县| 旌德县| 西乌珠穆沁旗| 灌云县| 尖扎县| 涿州市| 石河子市| 珠海市| 尉犁县| 榕江县| 兖州市| 油尖旺区| SHOW| 沿河| 留坝县| 曲松县| 广东省| 江都市| 盐山县| 眉山市| 湘阴县| 岢岚县| 榆中县| 华宁县| 高淳县| 同仁县| 建湖县| 镇坪县|