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 : 外部通信体或者代表者。
Spark Streaming源码解读之Driver中ReceiverTracker架构设计以具体实现彻底研究的更多相关文章
- 11.Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究
上篇文章详细解析了Receiver不断接收数据的过程,在Receiver接收数据的过程中会将数据的元信息发送给ReceiverTracker: 本文将详细解析ReceiverTracker的的架构 ...
- Spark Streaming源码解读之流数据不断接收和全生命周期彻底研究和思考
本节的主要内容: 一.数据接受架构和设计模式 二.接受数据的源码解读 Spark Streaming不断持续的接收数据,具有Receiver的Spark 应用程序的考虑. Receiver和Drive ...
- Spark Streaming源码解读之Driver容错安全性
本期内容 : ReceivedBlockTracker容错安全性 DStreamGraph和JobGenerator容错安全性 Driver的安全性主要从Spark Streaming自己运行机制的角 ...
- Spark Streaming源码解读之JobScheduler内幕实现和深度思考
本期内容 : JobScheduler内幕实现 JobScheduler深度思考 JobScheduler 是整个Spark Streaming调度的核心,需要设置多线程,一条用于接收数据不断的循环, ...
- 15、Spark Streaming源码解读之No Receivers彻底思考
在前几期文章里讲了带Receiver的Spark Streaming 应用的相关源码解读,但是现在开发Spark Streaming的应用越来越多的采用No Receivers(Direct Appr ...
- Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考
本期内容 : 数据接收架构设计模式 数据接收源码彻底研究 一.Spark Streaming数据接收设计模式 Spark Streaming接收数据也相似MVC架构: 1. Mode相当于Rece ...
- Spark Streaming源码解读之Receiver生成全生命周期彻底研究和思考
本期内容 : Receiver启动的方式设想 Receiver启动源码彻底分析 多个输入源输入启动,Receiver启动失败,只要我们的集群存在就希望Receiver启动成功,运行过程中基于每个Tea ...
- Spark Streaming源码解读之生成全生命周期彻底研究与思考
本期内容 : DStream与RDD关系彻底研究 Streaming中RDD的生成彻底研究 问题的提出 : 1. RDD是怎么生成的,依靠什么生成 2.执行时是否与Spark Core上的RDD执行有 ...
- Spark Streaming源码解读之Job动态生成和深度思考
本期内容 : Spark Streaming Job生成深度思考 Spark Streaming Job生成源码解析 Spark Core中的Job就是一个运行的作业,就是具体做的某一件事,这里的JO ...
随机推荐
- 之前想搞一个nim但因为是自用我会持续修复完善
异步方式的优点:客户端和服务端互相解耦,双方可以不产生依赖.缺点是:由于引入了消息中间件,在编程的时候会增加难度系数.此外,消息中间件的可靠性.容错性.健壮性往往成为这类架构的决定性因素. 幸运的是程 ...
- PHP开发工具
“工欲善其事,必先利其器”,进行PHP开发,选择一个合适的开发工具是必要的. 1.Zend Studio 如果对PHP开发工具进行一个排名,Zend Studio一定是当之无愧的第一名.它来自Zend ...
- 如何在一个网站或者页面写js
如何在一个网站或者页面写js: 1. JS的分层(功能):jquery(tools) 组件(ui) 应用(app).mvc(backboneJS) 2. JS的规划(管理):避免全局变量和方法(命 ...
- Golang里面使用protobuf(proto3)
参考文章:https://developers.google.com/protocol-buffers/docs/gotutorial 1.执行指令: go envgo get github.com/ ...
- [ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.3.1:
security-sdk-1.0.jar已经存在于D:/secServerSDK-test/src/main/resources/lib下 报错如下: xxxxxx@xxxxxxxx /d/secSe ...
- QQ通信原理及QQ是怎么穿透内网进行通信的? (转)
原:http://f543711700.iteye.com/blog/978044#bc2344608 QQ是一个基于TCP/UDP协议的通讯软件 发送消息的时候是UDP打洞,登陆的时候使用HTTP~ ...
- spring mvc 深入学习
参考文章: 第二章 Spring MVC入门 —— 跟开涛学SpringMVC Spring MVC 3.0 深入总结:http://blog.csdn.net/sunitjy/article/det ...
- canvas ---个性时钟
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化
Tomcat Connector的三种不同的运行模式性能相差很大,有人测试过的结果如下: 这三种模式的不同之处如下: BIO: 一个线程处理一个请求.缺点:并发量高时,线程数较多,浪费资源. Tomc ...
- Spring整合JUnit框架进行单元测试代码使用详解
一.Spring提供的JUnit框架扩展: 1. AbstractSpringContextTests:spring中使用spring上下文测试的Junit扩展类,我们一般不会使用这个类来进行单元 ...