Spark Streaming揭秘 Day13 数据安全容错(Driver篇)
Spark Streaming揭秘 Day13
数据安全容错(Driver篇)
书接上回,首先我们要考虑的是在Driver层面,有哪些东西需要维持状态,只有在需要维持状态的情况下才需要容错,总的来说,一共有三个组件需要容错:
- 数据层面:ReceiverBlockTracker,专门负责管理整个SparkStreaming运行数据的元数据,主要用来跟踪数据,需要状态。
- 逻辑层面:DStream和DStreamGraph,表达依赖关系,在恢复的时候需要恢复计算逻辑级别的依赖关系。
- 作业生成层面:JobGenerator,表明正在怎么基于RBT和DStreams的关系生成作业,消费了哪些数据,进行到了哪些程度,都需要容错。
在Driver层面,主要也是采用checkpoint和WAL两个容错机制。
ReceiverBlockTracker容错
ReceiverBlockTracker,会管理SparkStreaming运行过程中的所有数据,指针指向具体数据。所有操作都会保存在WAL中,所以当失败后可以恢复。
在ReceiverBlockTracker中,核心是如下的两个数据结构:
- 未分配队列streamIdToUnallocatedBlockQueues:存储所有已接收但是还没有分配给具体Batch的Block,会被具体Receiver调用。
- 已分配队列timeToAllocatedBlocks:表示已分配的Block,会被JobGenerator调用。需要注意的是,这是个HashMap,所以可以存很多Batch Duration的Blocks,可以支持window或者state操作。

所以,我们可以围绕数据的三个阶段展开:
阶段一:addBlock方法主要负责收集数据写入未分配队列

我们可以看到,当收到Executor端传过来的数据,第一步通过writeToLog方法进行元数据的容错处理。需要注意,在这里并没有判断啥调用条件,具体的容错方式是在writeToLog方法内部判断的。
阶段二:allocateBlocksToBatch方法主要负责将未分配队列数据写入已分配队列

在获取所有未分配数据的时候,采用dequeue方法,其中隐含的会进行一个union操作,按照streamID(表示不同的输入数据来源)进行汇总。
同时,在获取数据后,首先做writeToLog,在成功写入WAL之后,才会把元数据放入已分配队列中。
阶段三:CleanUpOldBatchs将过期数据进行销毁

我们可以看到,在实际执行销毁前,也会调用writeToLog进行灾备。
综上所述,在数据管理层面,数据生成、消费、销毁的时候都做灾备!!!
writeToLog
这是进行容错的核心方法,方法本身也是比较简洁的。
首先,会通过isWriteAheadLogEnabled方法进行备份方式在判断,我们发现,其最终是调用了如下的方法。可以看到其核心就是使用到了checkpoint目录,也就是说备份其实是基于checkpoint机制进行的。

实际备份其实就是以WAL的方法进行文件写入,writeToLog目前程序出错时可以recover,但是程序升级时不行,可以通过覆写代码,将WAL保存在其他的地方。

总结来说,checkpoint提供了数据的存放位置,而WAL则是具体的数据组织方法。
欲知后事如何,且听下回分解
DT大数据每天晚上20:00YY频道现场授课频道68917580
Spark Streaming揭秘 Day13 数据安全容错(Driver篇)的更多相关文章
- Spark Streaming揭秘 Day12 数据安全容错(Executor篇)
Spark Streaming揭秘 Day12 数据安全容错(Executor篇) 今天,让我们研究下SparkStreaming在Executor端的数据安全及容错机制. 在SparkStreami ...
- Spark Streaming揭秘 Day35 Spark core思考
Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来 ...
- Spark Streaming揭秘 Day32 WAL框架及实现
Spark Streaming揭秘 Day32 WAL框架及实现 今天会聚焦于SparkStreaming中非常重要的数据安全机制WAL(预写日志). 设计要点 从本质点说,WAL框架是一个存储系统, ...
- Spark Streaming揭秘 Day4-事务一致性(Exactly one)
Spark Streaming揭秘 Day4 事务一致性Exactly one 引子 对于业务处理系统,事务的一致性非常的关键,事务一致性(Exactly one),简单来说,就是输入数据一定会被处理 ...
- Spark Streaming揭秘 Day3-运行基石(JobScheduler)大揭秘
Spark Streaming揭秘 Day3 运行基石(JobScheduler)大揭秘 引子 作为一个非常强大框架,Spark Streaming兼具了流处理和批处理的特点.还记得第一天的谜团么,众 ...
- Spark Streaming揭秘 Day33 checkpoint的使用
Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的 ...
- Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming 在Spark2.x中,Spark Streaming获得了比较全面的升级,称为St ...
- Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕
Spark Streaming揭秘 Day28 在集成开发环境中详解Spark Streaming的运行日志内幕 今天会逐行解析一下SparkStreaming运行的日志,运行的是WordCountO ...
- Spark Streaming揭秘 Day24 Transformation和action图解
Spark Streaming揭秘 Day24 Transformation和action图解 今天我们进入SparkStreaming的数据处理,谈一下两个重要的操作Transfromation和a ...
随机推荐
- Swift 玩转gif
众所周知,iOS默认是不支持gif类型图片的显示的,但是我们项目中常常是需要显示gif为动态图片.那肿么办?第三方库?是的 ,很多第三方都支持gif , 如果一直只停留在用第三方上,技术难有提高.上版 ...
- IIS 发布 之 Word导出本地测试正常,发布报错
用C#动态生成Word文档功能实现了,在本地的机器运行时是好的,但程序发布 IIS 或 远程服务器 上就报错, 报错信息为:检索 COM 类工厂中 CLSID 为 {000209FF-0000-000 ...
- HttpClient设置代理,超时,以及得到cookies
import java.net.URI; import java.util.List; import org.apache.http.HttpEntity; import org.apache.htt ...
- 前端必会css整理
1.设置css样式的三种方式? 外部样式表,引入一个外部css文件 内部样式表,将css代码放在<head>标签内部 内联样式,将css样式 ...
- 实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法
实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法 #import <Found ...
- mybatis缓存创建过程
带着 上篇 的问题,再来看看mybatis的创建过程 1.从SqlSessionFactoryBuilder解析mybatis-config.xml开始 对文件流解析 XMLConfigBuilder ...
- 【Irrlicht鬼火引擎】 认识鬼火引擎
一.Irrlicht简介 (1)概念 Irrlicht引擎是一个用C++书写的高性能实时3D引擎,可以应用于C++程序或者.NET语言中.通过使用Direct3D(Windows平台).OpenGL ...
- 关于MapReduce单词统计的例子:
要统计的文件的文件名为hello hello中的内容如下 hello you hello me 通过MapReduce程序统计出文件中的各个单词出现了几次.(两个单词之间通过tab键进行的分割) im ...
- HTTP - 摘要认证
基本认证便捷灵活,但极不安全.用户名和密码都是以明文形式传送的,也没有采取任何措施防止对报文的篡改.安全使用基本认证的唯一方式就是将其与 SSL 配合使用. 摘要认证是另一种 HTTP 认证协议,它与 ...
- 解决MS Office下载网站数据失败的问题
最近遇到在MS Excel中建立的Web Query在创建完成后过了一段时间(或关闭文件后再次打开文件并刷新数据)出现无法刷新的问题,点击刷新时报错如下: 无法下载您要求的信息. 这是一个很不友好的报 ...