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 ...
随机推荐
- c语言全局变量
1.全局变量 #include <stdio.h> int L,n; void solve() { // printf("%d",L); printf("%d ...
- 二维线段树 HDU 1823最简单的入门题
xiaoz 征婚,首先输入M,表示有M个操作. 借下来M行,对每一行 Ih a l I 表示有一个MM报名,H是高度, a是活泼度,L是缘分. 或 Q h1 h2 a1 a2 求 ...
- DOM+Javascript一些实例
1.内容+遮罩层+悬浮对话框 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- mysql颠覆实战笔记(二)-- 用户登录(一):唯一索引的妙用
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享.但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的<web级mysql颠覆实战课程 >.如需转载请尊重老师劳动,保留沈逸 ...
- lk启动流程详细分析
转载请注明来源:cuixiaolei的技术博客 这篇文章是lk启动流程分析(以高通为例),将会详细介绍下面的内容: 1).正常开机引导流程 2).recovery引导流程 3).fastboot引导流 ...
- 为MYPoint类写一个分类
#import <Foundation/Foundation.h> //xieyi @protocol showOn @required -(void)printOn; @end // l ...
- CF Polycarpus' Dice (数学)
Polycarpus' Dice time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- 关于XShell的常见使用和设置以及Linux中的常见命令.
本文部分转自:http://sundful.iteye.com/blog/704079 和 http://www.vckai.com/p/5 有时候在XShell中操作的一些命令傻傻的分不清这个命令到 ...
- 【推理,贪心】UVa 1319 - Maximum
看到了大神的代码.理解了好久...真是差距. 题意:给出m, p, a, b,然后xi满足已下两个公式, 求 xp1 + xp2 +...+ xpm 的最大值. 1.-1/sqrt(a) <= ...
- 钓鱼 贪心 end
#include<iostream> int m,n; int *p; int dis=0; int peo=0; int data[3][2]; int b[3][2]; int da[ ...