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 ...
随机推荐
- Android中使用AlarmManager进程被删除的解决办法
http://blog.csdn.net/zhouzhiwengang/article/details/13022325 在Android中,AlarmManager提供了不受休眠状态的系统定时功能, ...
- login
package addresslist; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.event.Act ...
- Python之路,day8-Python基础
***面向对象的好处*** 更容易扩展.提高代码使用效率,使你的代码组织性更强,更清晰 更适合复杂项目的开发 封装 把功能的实现细节封装起来,只暴露调用接口 继承 多态 接口继承 定义 类----&g ...
- javascript操控浏览器
测试环境为Chrome浏览器47.0.2526.106 m 测试窗口为F12->Console 跳转网页 // 跳转到百度 window.location.href = "https: ...
- vim 高亮显示配置
/etc/vim/vimrc set showmatch "bracket matchset matchtime=5 "bracket match time 5 set ignor ...
- IE9 使用document.getElementsByName("abc") 不能获取到名称相同SPAN元素
<div name="abc"></div> <input name="abc" type="text" /& ...
- mybatis实战教程(mybatis in action)之十:mybatis SqlSessionSupport 的使用,构件DAO 层的应用
前面的系列mybatis 文章,已经基本讲到了mybatis的操作,但都是基于mapper隐射操作的,在mybatis 3中这个mapper 接口貌似充当了以前在ibatis 2中的 DAO 层的作用 ...
- urllib2抓取HTML存入Excel
通过urllib2抓取HTML网页,然后过滤出包含特定字符的行,并写入Excel文件: # -*- coding: utf-8 -*- import sys #import urllib import ...
- 在Ubuntu14.04系统POWER8服务器上搭建Docker Registry服务
本文描述了如何在POWER8服务器上搭建一个本地化的Docker镜像仓库,主要涉及镜像制作,Docker Registry服务启动等.希望能够对在非X86服务器上搭建Docker仓库的同学提供参考. ...
- hadoop2升级的那点事情(详解)
前言 前阵子,公司的hadoop从hadoop1.02升级到hadoop2.4.1,记录下升级的步骤和遇到的问题,和大家分享,希望别人可以少走一些弯路 技术选型 当前使用版本: apache ...