Spark Streaming源码解读之Driver容错安全性
本期内容 :
- ReceivedBlockTracker容错安全性
- DStreamGraph和JobGenerator容错安全性
Driver的安全性主要从Spark Streaming自己运行机制的角度考虑的,如对源数据保存方面使用了WAL方式,驱动层面的容错安全主要使用的是CheckPoint ,
但是仅仅是WAL和CheckPoint在生成环境下不是完全足够的。
Spark Streaming 的Driver容错为什么是这两个方面 :
1、 ReceiverBlockTracker主要管理整个Spark Streaming的运行数据的源数据的,从容错的角度讲,源数据是否很重要,否则出错的话数据都不正常何谈其它呢
2、 DStream和JobGenerator 这个是框架的核心层面,具体调度到什么层面了,这是从业务与运行的角度考虑的
Driver哪些需要维持状态的:
1、 ReceiverBlockTracker跟踪数据毫无疑问是需要维持状态,所以就需要容错
2、 DStreams表达了依赖关系,在其恢复的时候需要恢复计算逻辑级别的依赖关系
3、 JobGenerator 表明你正在基于ReceiverBlockTracker的数据及DStreams构成的依赖关系产生Job的过程,消费了哪些数据、进行到什么程度等状态部分
ReceiverBlockTracker :管理SparkStreaming的运行过程中指针指向的数据,一般都是在Executor上面的,并且把数据分配给每个Batches

Receiver接收到数据后是怎么处理的 :
1、先进行WAL(冷备份),然才会写入内存中,整个Spark Streaming作业中的调度或者Generator是基于GetReceivedBlockQueue中的数据,来观察每个Streaming接收到的数据
2、 放入内存中是被当前运行的Spark Streaming的调度器JobGenerator去使用的,JobGenerator不可能直接使用WAL,WAL是一个磁盘的存储架结构,而是使用内存的缓存数据结构。




Spark Streaming是以窗口为作业划分标志,如频率以10S,在10S时间段接收到的所有数据保存在StreamIdToUnallocatedBlockQueues数据结构中,当计算时需要把,
所有的数据提取出来 ,最后就变成StreamIDToBlocks ,Spark Streaming处理中可以有不同的数据来源同时进行处理 。

最终可以在AllocatedBlock 中获取数据,他有很多时间窗口的Blocks,Window操作或者状态操作都需要依赖这些信息,如果需要10分钟期间数据,根据数据结构把这些Bachelor集合起来就行了 。
随着时间的推移,会不断的产生数据,同时也不可能一直保持数据不变,需要对旧有的数据进行清理:


CheckPoint : Job开始进行一次CheckPoint,Job结束后也来一次CheckPoint



UpdateCheckPoint :


GenerateJobs :

ClearMetadata :

Spark Streaming源码解读之Driver容错安全性的更多相关文章
- Spark Streaming源码解读之Executor容错安全性
本期内容 : Executor的WAL 消息重放 数据安全的角度来考虑整个Spark Streaming : 1. Spark Streaming会不断次序的接收数据并不断的产生Job ,不断的提交J ...
- 第12课:Spark Streaming源码解读之Executor容错安全性
一.Spark Streaming 数据安全性的考虑: Spark Streaming不断的接收数据,并且不断的产生Job,不断的提交Job给集群运行.所以这就涉及到一个非常重要的问题数据安全性. S ...
- 11.Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究
上篇文章详细解析了Receiver不断接收数据的过程,在Receiver接收数据的过程中会将数据的元信息发送给ReceiverTracker: 本文将详细解析ReceiverTracker的的架构 ...
- Spark Streaming源码解读之Driver中ReceiverTracker架构设计以具体实现彻底研究
本期内容 : ReceiverTracker的架构设计 消息循环系统 ReceiverTracker具体实现 一. ReceiverTracker的架构设计 1. ReceiverTracker可以以 ...
- Spark Streaming源码解读之JobScheduler内幕实现和深度思考
本期内容 : JobScheduler内幕实现 JobScheduler深度思考 JobScheduler 是整个Spark Streaming调度的核心,需要设置多线程,一条用于接收数据不断的循环, ...
- Spark Streaming源码解读之流数据不断接收和全生命周期彻底研究和思考
本节的主要内容: 一.数据接受架构和设计模式 二.接受数据的源码解读 Spark Streaming不断持续的接收数据,具有Receiver的Spark 应用程序的考虑. Receiver和Drive ...
- 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 ...
随机推荐
- SPOJ-SUBST1 New Distinct Substrings(后缀数组)
题目大意:判断总共有多少种不同的子串. 题目分析:不同的子串数目为 Σ(后缀SA[i]的长度-height[i]). 代码如下: # include<iostream> # include ...
- c# 映射对比测试
c# 映射对比测试(测试对象,测试案例,测试结果) 测试组件对象: TinyMapper-EmitMapper-AutoMapper-NLiteMapper-Handwritten 对比测试案例: ...
- 《java编程思想》读书笔记(二)第五章(2)
成员初始化 Java尽力保证:所有变量在使用前都能得到恰当的初始化. 对于方法的局部变量,Java会以编译时报错的形式贯彻这种保证,比如: void f() { int i; //这里编译时就会报错, ...
- Get Jenkins job build queue length
Jenkins API doesn’t provide the job build queue length. Hence, it seems we have to parse the html to ...
- CSS定位类型
在CSS里面布局是相当重要的,二在这一周了,学习了一些定位,很少用到,用了更好的方式浮动.BFC.IFC等去解决问题. 而也我也对定位的概念不那么熟练运用. 初步的定位类型 1.静态定位(static ...
- 修复FreeBSD上的ufs文件系统
昨天在两台FreeBSD上配置好Heartbeat服务(两台机器是用网线连通的,做为Heartbeat的两个节点),启动服务时Heartbeat检测到crmd守护进程没起来,于是它就尝试重启两台机器以 ...
- 推荐的Android ORM框架
1. OrmLite OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM.支持JDBC连接,Spring以及Android平台.语法中广泛使用了注解(Annotation ...
- t2712:字符串移位包含问题
t2712:字符串移位包含问题 总时间限制:1000ms 内存限制:65536kB描述 给定两个字符串s1和s2,要求判定其中一个字符串 是否是另一字符串通过循环移位后的子字符串.例 ...
- mysql总结
//查询日期之前的差距 select user_name , from_unixtime(user_lastlogin_time),now() , year(now())- ...
- .NET中的动态编译
代码的动态编译并执行是一个.NET平台提供给我们的很强大的工具用以灵活扩展(当然是面对内部开发人员)复杂而无法估算的逻辑,并通过一些额外的代码来扩展我们已有 的应用程序.这在很大程度上给我们提供了另外 ...