ndlli 发表于 2019-1-31 07:50:52

(版本定制)第10课:Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考

  本期内容:
      1、数据接收架构设计模式
      2、数据接收源码彻底研究
  

  1、Receiver接受数据的过程类似于MVC模式:
  Receiver,ReceiverSupervisor和Driver的关系相当于Model,Control,View,也就是MVC。
  Model就是Receiver,存储数据Control,就是ReceiverSupervisor,Driver是获得元数据,也就是View。
http://s3.运维网.com/wyfs02/M01/80/6A/wKioL1dBLuLgYuYHAAEjDQT_gyI463.png
  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("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
页: [1]
查看完整版本: (版本定制)第10课:Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考