Spark Streaming源码解读之Driver中ReceiverTracker架构设计以具体实现彻底研究
本期内容 :
- ReceiverTracker的架构设计
- 消息循环系统
- ReceiverTracker具体实现
一、 ReceiverTracker的架构设计
1、 ReceiverTracker可以以Driver中的具体自己的算法来在具体的Execute中启动Receiver,启动Receiver的方式会把每个Receiver都封装成为一个Tracker,
Tracker是这个Job中唯一的Tracker,实质上讲ReceiverTracker启动Receiver的方式就是封装成一个个Job ,有多少个Job就会启动多少个Receiver ,或者是有
多少Receiver就会分发多少个Job ,每个Job里一个Tracker ,Tracker里面就一条数据就是这个Receiver的数据。
2、 ReceiverTracker在启动Receiver时它有一个ReceiverSupervisor ,ReceiverSupervisorlMpl作为自己的实现,实际上ReceiverSupervisor它自己在启动
的时候转过来会帮我们启动Receiver ,Receiver会不断的接收数据转过来会通过BlockGenerator会生成一个个的Block ,加上定时器就会不断的存储数据,存储
数据有两种,一通过BlockMessage ,二先写日志WAL的方式,存储过后ReceiverSupervisorlMPL会把存储的数据的源数据 会汇报给ReceiverTracker ,实质上
是汇报给ReceiverTrackerRPC通信消息实体,ReceiverTracker通过RPC接收到数据之后转过来就会准备下一步的数据管理工作。
二、 ReceiverTracker具体实现
ReceiverTracker接收到数据后怎么具体怎么进行处理 :
存储数据且汇报给Driver:
ReceivedBlockInfo :
ReceiverTracker 作为RPC消息循环体,来接收Receiver的消息,管理整个Receiver的执行,Receiver的启动、回收、执行过程中的数据管理,及包含重新启动。
这些消息是完成Receiver与ReceiverTracker消息沟通的。
确定所有的输入流,需要所有的输入流来启动。
GetReceivedBlockQueue: 是Streaming对应Block接收到的Block ,这边是HashMap可以有很多的输入流,不同的输入流可以彼此独立的没有什么关系的,
从Driver的角度讲我们作为一个更大的HashMap的集合,后面接收到的数据进行处理。
会跟踪所有接收到的Block ,并且根据需要把接收到的Receiver的Blocks 分配给我们的Batches,根据需要的时间,对数据进行分配当前执行的作业
三、 消息通信体
StartAllReceivers : 启动所有的Receiver
UpdateReceiverRateLimit : ReceiverTracker 他可以动态的调整Receiver接收的Limit
总结 :
1、Receiver接收的数据合并并存储数据后ReceiverSupervisorlMpl的数据及源数据汇报给我们的ReceiverTracker
2、ReceiverTracker接收源数据汇报的其实是内部RPC消息通信体,接收数据的内部其实有一个ReceivedBlockTracker进行接收数据的分配
3、JobGenerator会将每个Bach作为时间窗口,工作的时候根据源数据信息ReceiverTracker中获取相应的源数据信息生成RDD
4、ReceivedBlockTracker管理整个Block的源数据信息,但是作为内部的一个管理对象
如果从设计的模式讲,ReceiverTracker与ReceiverBlockTracker ,或者说我们的RPC通信对象和ReceiverBlockTracker他们的设计模式是门面(Facet)设计模式:
ReceiverBlockTracker :内部做事情的
ReceiverTracker : 外部通信体或者代表者。
转载于:https://www.cnblogs.com/yinpin2011/p/5522133.html
Spark Streaming源码解读之Driver中ReceiverTracker架构设计以具体实现彻底研究相关推荐
- 第14课:Spark Streaming源码解读之State管理之updateStateByKey和mapWithState解密
第14课:Spark Streaming源码解读之State管理之updateStateByKey和mapWithState解密 /* 王家林老师授课http://weibo.com/ilovepai ...
- 第10课:Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考
特别说明: 在上一遍文章中有详细的叙述Receiver启动的过程,如果不清楚的朋友,请您查看上一篇博客,这里我们就基于上篇的结论,继续往下说. 博文的目标是: Spark Streaming在接收 ...
- Spark 定制版:015~Spark Streaming源码解读之No Receivers彻底思考
本讲内容: a. Direct Acess b. Kafka 注:本讲内容基于Spark 1.6.1版本(在2016年5月来说是Spark最新版本)讲解. 上节回顾 上一讲中,我们讲Spark Str ...
- Spark Streaming源码解读之No Receivers彻底思考
本期内容 : Direct Acess Kafka Spark Streaming接收数据现在支持的两种方式: 01. Receiver的方式来接收数据,及输入数据的控制 02. No Receive ...
- 第15课:Spark Streaming源码解读之No Receivers彻底思考
通常我们使用kafka direct的方式使用的是没有自定offset的构造函数 val kc = new KafkaCluster(kafkaParams) 完完全全就是kafka的操作了 我们看看 ...
- Streaming源码解读之接收流数据的全生命周期
2019独角兽企业重金招聘Python工程师标准>>> 上一课我们讲解了Receiver启动的流程.Receiver是通过ReceiverSupervisor的start方法启动的: ...
- Spark Streaming源码分析 – DStream
A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous sequence o ...
- Spark Streaming 源码详解
原地址 本系列内容适用范围:* 2015.12.05 update, Spark 1.6 全系列 √ (1.6.0-preview,尚未正式发布) * 2015.11.09 update, Spark ...
- Spark Streaming源码阅读(0)楔子
本篇文章主要是引出作者阅读源码的主要原因: 主要原因就是最近前端和后端BUG都写的太多了,老大无路可走,强心干预我进行项目开发,所以就派了个阅读源码的活交给我,想让我学懂了以后进行分享,基于感恩心理, ...
最新文章
- [kuangbin带你飞]专题四 最短路练习 B( POJ 2253) Frogger(spfa)
- MySQL mysqldump命令
- 第一篇博客文章,hello world及编码
- mysql sphinx windows安装_Sphinx在windows下安装使用[支持中文全文检索]
- java api 开发_Java开发人员应该知道的前20个库和API
- flash软件视频不能测试,360安全卫士解决视频播放错误怎么办?无法调出flash解决办法...
- eclipse mysql jndi_Java开发网 - tomcat5配置jndi的问题 (jdbc:comp is not bound in this Context)...
- arxiv.org经常打不开真是让人头大
- js实现网页跳转脚本
- 在Redis集群技术上,你不可错过的四大集成者
- Named Return Value Optimization (具名返回值优化)
- 遗传算法求解tsp问题 C语言,遗传算法解决TSP问题(C++)
- 软件测试笔记本硬件,专业工作站软件测试_惠普笔记本电脑_笔记本评测-中关村在线...
- 五个拿来就能用的炫酷登录页面
- 使用protobuf_example_addressbook.proto项目时的问题:PROTOBUF_USE_DLLS
- linux分区btrfs,Linux文件系统之btrfs
- HTML+CSS+JS网页设计与制作期末大作业:网站——宏源山庄
- 概率论由相关性求数学期望和方差的公式_概率论与数理统计(马涛)第4章——数学期望与方差.ppt...
- 项目总结,彻底掌握如何在NodeJs中使用Sequelize
- Unity3D-游戏场景优化之遮挡剔除(Occlusion Culling)的使用
热门文章
- 耐克人脸识别_狄耐克智能交通再结一位“老铁”——与力高地产达成战略合作协议!...
- imageJ 如何下载plugin_如何给微服务架构的项目做验收测试?
- ubuntu服务器系统不识别,U盘安装16.04server版 安装好后重启 无法进入系统
- vscode设置go环境
- Linux系统根据端口号查找项目路径
- 读写分离oracle redis,redis集群主从之读写分离
- 版本控制系统(SVN,Git)与项目托管平台(Github,Gitee,Coding)
- 【CCCC】L2-022 重排链表 (25分),,链表遍历
- 【codevs1231】最优布线问题
- 【codevs1004】四子连棋