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 ...
随机推荐
- assets
我们知道assets/和res/文件夹用于存放可在应用程序中的使用文件. assets/用于存储各种应用程序中需要的文件(例如配置文件或音频文件等),这些文件会打包在Android应用程序中. res ...
- 炼数成金hadoop视频干货06-10
视频地址:http://pan.baidu.com/s/1dDEgKwD 第六课统讲了hadoop几个子项目和HBase,第七课还是讲的HBase 第八课讲了PIG 第九课讲了Hive和Zookeep ...
- Debian 7 安装 Docker
Debian 7更新内核到3.16后 一.添加docker源 在source.list中加入: # Docker Repo deb https://get.docker.io/ubuntu docke ...
- Android studio设置参数提示
在Android studio的使用的过程中,那么就需要对当前的代码显示当前的方式做一个的提示信息,那么可以通过Android studio的的设置的方法,来对Android studio方法的提示显 ...
- maven管理多模块系统
1.创建mydemo项目cd d:\myworkmvn archetype:create -DgroupId=com.example.mydemo -DartifactId=mydemo 生成myde ...
- sql 自定义函数--十进制转二进制
随笔记忆: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DECTOBIN]') and xtype in ...
- 使用copy再次实现Circle类,保证不能有内存泄漏问题
#import <Foundation/Foundation.h> //xieyi @protocol showOn @required -(void)printOn; @end // l ...
- ubuntu14_gtk 安装
1:apt-get install build-essential2:apt-get install gnome-devel gnome-devel-docs
- MySQL数据库的存储结构
--把若干条sql语句封装起来,起个名字,叫做过程,也是没有返回值的函数 --把这个过程存储在数据库中->存储过程 --存储过程的创建过程 create procedure proceduceN ...
- C#中显/隐式实现接口及其访问方法
原贴地址: http://www.cnblogs.com/dudu837/archive/2009/12/07/1618663.html 在实现接口的时候,VS提供了两个菜单,一个是"实现接 ...