千家信息网

(版本定制)第10课:Spark Streaming源码解读

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本期内容:1、数据接收架构设计模式2、数据接收源码彻底研究1、Receiver接受数据的过程类似于MVC模式:Receiver,ReceiverSupervisor和Driver的关系相当于Model
千家信息网最后更新 2026年11月02日(版本定制)第10课:Spark Streaming源码解读

本期内容:

1、数据接收架构设计模式

2、数据接收源码彻底研究


1、Receiver接受数据的过程类似于MVC模式:

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

Model就是Receiver,存储数据Control,就是ReceiverSupervisor,Driver是获得元数据,也就是View。

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 startedlogDebug("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 updatesfor {    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启动的内部机制:


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

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

数据 方法 也就是 只有 就是 模式 存储 源码 位置 信息 内容 函数 博客 应用程序 机制 架构 流程 消息 状态 程序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 天津市摩尔互联网科技 新华互联网科技学校 互联网科技有限公司图片 港股互联网科技股 互联网 科技创新 中国 科技 互联网 互联网科技英文 致聘互联网科技 互联网金融科技平台 甘肃拓世互联网科技有限公司 宁夏众和广鑫互联网科技有限公司 浙江互联网科技研学营 开一家科技互联网公司需要多少钱 互联网科技的全部知识 国大互联网教育科技有限公司薪资 江苏苏星互联网科技有限公司 广州百诚互联网科技有限公司官网 本届互联网大会上的黑科技 西安有哪些互联网高科技企业 互联网企业和网络科技有限公司 喔噻互联网科技有限公司 互联网佳科技有限公司 互联网科技垄断 善班互联网科技 互联网科技公司名称 中国科技互联网公司收入 汽车互联网创新科技园 黑科技 体验场景 互联网大会 雨阳互联网卡科技有限公司 恒生互联网科技趋势
0