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 ...
随机推荐
- [NOIP2013] 火柴排队(归并排序)
题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: ∑(ai-bi)^2 其中 ai 表示 ...
- Codeforces Round #294 (Div. 2) D. A and B and Interesting Substrings
题意: 对于26个字母 每个字母分别有一个权值 给出一个字符串,找出有多少个满足条件的子串, 条件:1.第一个字母和最后一个相同,2.除了第一个和最后一个字母外,其他的权和为0 思路: 预处理出sum ...
- [转] "self = [super init]"的解释与潜藏bug
Objective-C的推荐init方法写法如下: - (id) init { if(self = [super init]) { //为子类增加属性进行初始化 } return self; } 这里 ...
- 初学Laravel
之前一直用开tp和ot,本来觉得学会一个tp便可走遍天下,tp的确强大.但后来听到很多同行的同学说他们的公司都开始转型往lv走了,我的同学没有学过lv,然而公司给足时间去让他们去学.当然,缺人可能是占 ...
- Apache-Jemeter web性能测试工具使用
Jmeter是一款java开源的性能测试软件. 要使用该工具进行性能测试,首先需要下载该工具到你的电脑,接着配置java开发环境以及Jmeter环境.搭建完成之后,OK,我们就可以进行测试了. 测试第 ...
- .split()函数使用方法
split说明 split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list) split语法 str.split('type',num)[n] 整个语法的意思是:以 ...
- rabbitmq, windows/linux, c/c++/node.js/golang/dotnet
官网:http://www.rabbitmq.com/ zeromq 相当于 message backbone,而rabbitmq相当于message broker.有的应用系统中,二者并存. (1) ...
- html/京东项目/京东网页高仿/js/jq/css/java web/
登录部分HTML+CSS: <!DOCTYPE html><html> <head> <meta charset="UTF-8& ...
- 判断一个Activity 判断一个包 是否存在于系统中 的方法
判断一个包是否存在于系统中(来自网络),经过测试,好用: public boolean checkBrowser(String packageName) { if (packageName == nu ...
- backbone学习总结(一)
入职第三天,新公司项目用到backbone+underscore+require等框架,前两天把项目的开发环境都配置好啦,项目也能跑起来,现在准备好好学习公司自己的框架以及用到的框架,有点想吐槽,开发 ...