Spark Streaming揭秘 Day12 数据安全容错(Executor篇)
Spark Streaming揭秘 Day12
数据安全容错(Executor篇)
今天,让我们研究下SparkStreaming在Executor端的数据安全及容错机制。
在SparkStreaming中一共使用了两种容错方式:
- 存储数据副本
- 支持数据重放
副本机制
这是默认的处理方式,先让我们进入数据存储代码:

我们发现,SparkStreaming中存储是直接调用了blockManager中进行,blockManager本身就支持数据副本,是通过stoageLevel字段的定义。

一直往代码源头寻找,我们发现了storageLevel的定义:MEMORY_AND_DISK_SER_2,也就是说,其两副本的处理方式。

进入BlockManager,下面就是数据执行副本的代码,可以看到,为了提高效率,采用了线程池实现。

预写日志WAL
SparkStreaming中WAL机制和HBase比较接近,主要在如下代码中实现:

从代码中,我们可以看出几个特点:
- 必须要定义checkpoint目录(一般是放在hdfs上)
- 和副本方式相比,需要传递stream_id,也就是说WAL是按照receiver来管理的
让我们进入ReceivedBlockHandler中的实际处理部分:

我们发现在WAL模式中,其实数据是通过通过BlockManager和WAL中存放,也就WAL就是直接替代了原有BlockManager中的副本。
下面这段判断也能说明这点,一旦开启WAL后,其实会禁止副本数设置。

从WAL的运行看,我们发现,也是采用了线程池的方式,多线程处理在SparkStreaming中真是无处不在啊。

最后,对于WAL方式来说,因为写数据是顺序写,不会修改数据,用指针遍历即可,速度还是比较快的;但是WAL主要还是定位于高安全性,还是会对性能有一定影响,适合允许一定延时的场景。对支持数据重放这个方案来说,最佳的方案是引入Kafka,这样天然就有容错和副本!!!
欲知后事如何,且听下回分解
DT大数据每天晚上20:00YY频道现场授课频道68917580
Spark Streaming揭秘 Day12 数据安全容错(Executor篇)的更多相关文章
- Spark Streaming揭秘 Day13 数据安全容错(Driver篇)
Spark Streaming揭秘 Day13 数据安全容错(Driver篇) 书接上回,首先我们要考虑的是在Driver层面,有哪些东西需要维持状态,只有在需要维持状态的情况下才需要容错,总的来说, ...
- Spark Streaming揭秘 Day5 初步贯通源码
Spark Streaming揭秘 Day5 初步贯通源码 引子 今天,让我们从Spark Streaming最重要的三个环节出发,让我们通过走读,逐步贯通源码,还记得Day1提到的三个谜团么,让我们 ...
- Spark Streaming揭秘 Day4-事务一致性(Exactly one)
Spark Streaming揭秘 Day4 事务一致性Exactly one 引子 对于业务处理系统,事务的一致性非常的关键,事务一致性(Exactly one),简单来说,就是输入数据一定会被处理 ...
- Spark Streaming揭秘 Day3-运行基石(JobScheduler)大揭秘
Spark Streaming揭秘 Day3 运行基石(JobScheduler)大揭秘 引子 作为一个非常强大框架,Spark Streaming兼具了流处理和批处理的特点.还记得第一天的谜团么,众 ...
- Spark Streaming揭秘 Day35 Spark core思考
Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来 ...
- Spark Streaming揭秘 Day33 checkpoint的使用
Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的 ...
- Spark Streaming揭秘 Day32 WAL框架及实现
Spark Streaming揭秘 Day32 WAL框架及实现 今天会聚焦于SparkStreaming中非常重要的数据安全机制WAL(预写日志). 设计要点 从本质点说,WAL框架是一个存储系统, ...
- 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 ...
随机推荐
- 有符号的范围,-128~+127详解(zt)
这是一个困惑了我几年的问题,它让我对现在的教科书和老师极其不满,从我N年前开始摸电脑时,就几乎在每一本C++教科书上都说,8位有符号的取值范围是-128~+127,为什么不是-127~+127呢,后来 ...
- 小白日记38:kali渗透测试之Web渗透-手动漏洞挖掘(四)-文件上传漏洞
手动漏洞挖掘 文件上传漏洞[经典漏洞,本身为一个功能,根源:对上传文件的过滤机制不严谨] <?php echo shell_exec($_GET['cmd']);?> 直接上传webshe ...
- myeclipse自带客户端连接mysql数据库
一:开启mysql服务器 开始——服务 二:打开myeclipse数据库连接视图 找到DB Browser, 三:新建一个连接 如图: 四:填写相关连接参数,并添加jar包驱动 五:然后一路next, ...
- Vim编辑器的常用快捷键.
Linux中的文本操作离不开Vim编辑器的使用. Vim编辑器的使用相对门槛较高.需要挺长一段时间的适应. 总结一些Vim使用过程中常用的命令(这些命令基本上都是在vim的命令模式下使用) 1.跳转到 ...
- 关于cmd模式下切换目录
cmd下切换目录: 经常犯下的错误一: 在默认路径下输入 cd D: 想切换到D盘但是会出现上面的现象. 正确的的做法是直接输入要转移到的盘符: D: 就可以了. 在这种情况下再输入cd D:
- 关于Windows常用命令
本文引用自:http://ylbook.com/cms/computer/mingling.htm Windows Run命令: calc———–启动计算器certmgr.msc—-证书管理实用程序c ...
- MYSQL5.5和5.6参数的差异
performance_schema 在 MySQL 5.6 中默认是开启的,但相关的很多参数相比 MySQL 5.5 却是降低了,例如 performance_schema 自动调整到 445 个表 ...
- MongoDB - Installing MongoDB on Windows
1. 在 http://www.mongodb.org/downloads 选择下载所需的版本. 2. 执行 msi 安装包,可通过 Custom 选项,选择安装目录. 3. 创建数据目录.Mongo ...
- UML——综合实例
- Linux msgsnd : invalid argument
msgsnd(message id, buffer, sizeof buffer, ...); Important: buffer[0]不能为0!!!