本期内容 :

  • Executor的WAL
  • 消息重放

数据安全的角度来考虑整个Spark Streaming :

  1、 Spark Streaming会不断次序的接收数据并不断的产生Job ,不断的提交Job到集群运行,至关重要的问题接收数据安全性

  2、 由于Spark Streaming是基于Spark Core基础之上的,即是说运行过程中出现错误或者故障,Spark Streaming也可以借助

  Spark Core中RDD的容错的能力自动的进行恢复,恢复的前提是数据的安全可靠。

    所以Executor接收数据时的安全容错至关重要,在这个数据的安全容错的基础之上进行调度级别的容错基本靠Spark Core,

  对于Executor的安全容错主要是数据的安全容错,计算的时候Spark Streaming是借助于Spark Core上的RDD的容错。

数据的安全容错:

  1、 最天然的安全容错是副本,处理数据的时候先复制一个副本

  2、接收数据时不使用副本,数据源支持重放,可以反复读取数据,如读取过去10S中的数据,出现错误可以再次读取过去10S中的数据

  

一、 Executor的WAL

    Spark Core的BlockManager负责具体Executor上的数据读写操作,并且也是个MsteaStorageLevel的结构

  借助Spark底层的存储系统BlockManager做备份的StorageLevel 。

  

  

  

  

  

  1、BlockManagerBasedBlockHandler 副本机制

    

    

    

    

  2、 WriteAheadLogBasedBlockHandler WAL日志方式

    在其具体目录下会做一份日志,后续处理过程中出现问题可以基于日志恢复,日志需要写在目录下:

    需要先设置写在CheckPoint的目录,目录可以有很多目录: StreamingContext.CheckPoint 在上下文中指定具体目录,

    一般情况下会放在HDFS中,优势是安全,多份副本,缺点是影响性能,浪费存储空间 。

    

    

    

   同时在WAL及BlockManager中放数据:

    

    

    

    

    

  Executor写数据时是按照顺序的写,由于是做WAL使用不会修改数据,一般是根据索引读取,不需要全盘搜索所以读取速度非常快。

    

   

  3. 具体的实现 :管理具体的WAL文件,周期性的写文件,输出时写文件,清理旧文件

    

    

    

    

    

  

  备份存储总结 :

    1、 基于BlockManager ,比如说两台机器中都有数据,其中一台出错了就切换到另外一台

    2、 WAL方式,WAL方式比较耗时,假如你对性能要求非常苛刻的话WAL一般不是一个很好的选择,如果你能够容忍1分钟以上的延迟的话WAL往往比较安全

    注意: 如果还没有来得及进行WAL的话数据可能也会丢失。

  

二、 支持消息重放 :

  主要基于Kafka,天然就是有副本与容错的,已经作为一个存储系统了。

  Kafka有Receiver的方式,Direct的方式 :

  1、Receiver方式:是交给zookeeper管理的Mtdata的偏移量的如果失效后Kafka会基于Offset重新的读取,如果你读取失败此时不会给zookeeper发送ACK信号,

  zookeeper就让我你并没有消费这个数据,这个是zookeeper保证的,还有个数据重复消费的问题,就是消费完了但是还没有来得及给zookeeper进行同步,可能会重复。

  2、Direct方式:直接去操作Kafka ,而且是自己管理Offset ,Kafka本身就有Offset ,这种方式可以确保有且一次的操作处理,这个需要进行CheckPoint操作,较耗时间。

    

  管理这个Offset ,Bach会调用这个方法,上次的Offset减去这次的值就可以确定此次Offset的范围数据。

    

Spark Streaming源码解读之Executor容错安全性的更多相关文章

  1. 第12课:Spark Streaming源码解读之Executor容错安全性

    一.Spark Streaming 数据安全性的考虑: Spark Streaming不断的接收数据,并且不断的产生Job,不断的提交Job给集群运行.所以这就涉及到一个非常重要的问题数据安全性. S ...

  2. Spark Streaming源码解读之Driver容错安全性

    本期内容 : ReceivedBlockTracker容错安全性 DStreamGraph和JobGenerator容错安全性 Driver的安全性主要从Spark Streaming自己运行机制的角 ...

  3. Spark Streaming源码解读之JobScheduler内幕实现和深度思考

    本期内容 : JobScheduler内幕实现 JobScheduler深度思考 JobScheduler 是整个Spark Streaming调度的核心,需要设置多线程,一条用于接收数据不断的循环, ...

  4. Spark Streaming源码解读之流数据不断接收和全生命周期彻底研究和思考

    本节的主要内容: 一.数据接受架构和设计模式 二.接受数据的源码解读 Spark Streaming不断持续的接收数据,具有Receiver的Spark 应用程序的考虑. Receiver和Drive ...

  5. 15、Spark Streaming源码解读之No Receivers彻底思考

    在前几期文章里讲了带Receiver的Spark Streaming 应用的相关源码解读,但是现在开发Spark Streaming的应用越来越多的采用No Receivers(Direct Appr ...

  6. 11.Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究

    上篇文章详细解析了Receiver不断接收数据的过程,在Receiver接收数据的过程中会将数据的元信息发送给ReceiverTracker:   本文将详细解析ReceiverTracker的的架构 ...

  7. 16.Spark Streaming源码解读之数据清理机制解析

    原创文章,转载请注明:转载自 听风居士博客(http://www.cnblogs.com/zhouyf/) 本期内容: 一.Spark Streaming 数据清理总览 二.Spark Streami ...

  8. Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考

    本期内容 : 数据接收架构设计模式 数据接收源码彻底研究 一.Spark Streaming数据接收设计模式   Spark Streaming接收数据也相似MVC架构: 1. Mode相当于Rece ...

  9. Spark Streaming源码解读之Receiver生成全生命周期彻底研究和思考

    本期内容 : Receiver启动的方式设想 Receiver启动源码彻底分析 多个输入源输入启动,Receiver启动失败,只要我们的集群存在就希望Receiver启动成功,运行过程中基于每个Tea ...

随机推荐

  1. 为maven插件设置参数的三种方法

    很多的maven插件都提供了丰富的可选参数,用户可以通过设置特定的参数值来控制maven插件的行为.设置插件参数的方法主要有三种,分别是命令行设置,POM文件中为插件设置全局参数和POM文件中为插件设 ...

  2. $.post() 传递多个参数.

    $("#button").click(function() { /获取表单中id为idname和count的文本值付给property的两个属性 var property={&qu ...

  3. VMware Player安装Debian系统

    尝试用虚拟机来安装Debian系统,感觉这样一来安装与卸载方便,二来也可以在Linux系统安装出现问题的情况下方便在host主机上查找解决方法,同时也避免了要重新设置分区来安装Linux系统(双系统的 ...

  4. unity, 按类型查找文件

  5. 虚幻4外包团队-推荐非常全面的的Unreal教程

    <Unreal SDK 游戏开发从入门到精通(UnrealScript语法.UI Scene界面.UDK独立开发游戏)> 课程讲师:Shark  课程分类:.net 适合人群:初级 课时数 ...

  6. Lab_4_SysOps_Monitoring_Linux_v2.5

    System Operations - Lab 4: Monitoring with CloudWatch (Linux) - 2.5 ================================ ...

  7. PHP入门part4

    字符串函数 strlen(string); 获取字符串的长度,这里的长度是指该字符串的字节长度:!!utf-8里英文字母和符号占1个字节,中文是占3个字节. substr(string,number1 ...

  8. ios webview 只能播放带域名的视频连接好奇怪!

    - (void)loadWebView { UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(, , SCREEN_WI ...

  9. js运动框架之掉落的扑克牌(重心、弹起效果)

    玩过电脑自带纸牌游戏的同志们应该都知道,游戏过关后扑克牌会依次从上空掉落,落下后又弹起,直至"滚出"屏幕. 效果如图:    这个案例的具体效果就是:点击开始运动,纸牌会从右上角掉 ...

  10. Android 通过广播获取网络状态

    Android系统网络连接状态的改变会发一个广播,注册一个广播接收者,实时动态的检测网络状态,及时提醒用户,优化用户体验.          本文仅提供WIFI 状态的检测作为参考,其他网络连接方式请 ...