`

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

阅读更多
一、Spark Streaming 数据安全性的考虑:
  1. Spark Streaming不断的接收数据,并且不断的产生Job,不断的提交Job给集群运行。所以这就涉及到一个非常重要的问题数据安全性。
  2. Spark Streaming是基于Spark Core之上的,如果能够确保数据安全可好的话,在Spark Streaming生成Job的时候里面是基于RDD,即使运行的时候出现问题,那么Spark Streaming也可以借助Spark Core的容错机制自动容错。
  3. 对Executor容错主要是对数据的安全容错
  4. 为啥这里不考虑对数据计算的容错:计算的时候Spark Streaming是借助于Spark Core之上的容错的,所以天然就是安全可靠的。

Executor容错方式: 
1. 最简单的容错是副本方式,基于底层BlockManager副本容错,也是默认的容错方式。 

2.WAL日志方式

3. 接收到数据之后不做副本,支持数据重放,所谓重放就是支持反复读取数据。

 

BlockManager备份:

  1. 默认在内存中两份副本,也就是Spark Streaming的Receiver接收到数据之后存储的时候指定StorageLevel为MEMORY_AND_DISK_SER_2,底层存储是交给BlockManager,BlockManager的语义确保了如果指定了两份副本,一般都在内存中。所以至少两个Executor中都会有数据。

 
Receiver将数据交给BlockManger是由ReceiveredBlockHandler来处理的,有两种ReceiveredBlockHandler的实现:
1.WriteAheadLogBasedBlockHandler
2.BlockManagerBasedBlockHandler
这里的storageLevel是构建InputDStream时传入的,socketTextStream的默认存储级别是StorageLevel.MEMORY_AND_DISK_SER_2
 

 
如果使用WriteAheadLogBasedBlockHandler需要开启WAL,默认并没有开启:
 

 
 
WAL日志方式:
    这种方式会现将数据写入日志文件,就是checkpoint目录,出现异常是,从checkpoint目录重新读取数据,进行恢复。启动WAL时候,没必要将副本数设置成大于1,也不需要序列化。
 

 
WAL会将数据同时写入BlockManager和write ahead log,而且是并行的写block,当然两处的block存储完成,才会返回。
 
 
将Block 存入BlockManager:
 
 
将Block 存入WAL日志:
 
 
WAL写数据的时候是顺序写,数据不可修改,所以读的时候只需要按照指针(也就是要读的record在那,长度是多少)读即可。所以WAL的速度非常快。
浏览一下WriteAheadLog,他是一个抽象类:
看一下WriteAheadLog的一个实现类FileBasedWriteAheadLog的write方法:
根据不同时间获取不同Writer将序列化结果写入文件,返回一个FileBasedWriteAheadLogSegment类型的对象fileSegment。
 
读数据:
其中创建了一个FileBaseWriteAheadLogRandomReader对象,然后调用了该对象的read方法:

 

支持数据重放。

在实际的开发中直接使用Kafka,因为不需要容错,也不需要副本。 
Kafka有Receiver方式和Direct方式 
Receiver方式:是交给Zookeeper去管理数据的,也就是偏移量offSet.如果失效后,Kafka会基于offSet重新读取,因为处理数据的时候中途崩溃,不会给Zookeeper发送ACK,此时Zookeeper认为你并没有消息这个数据。但是在实际中越来用的越多的是Direct的方式直接操作offSet.而且还是自己管理offSet.

  1. DirectKafkaInputDStream会去查看最新的offSet,并且把offSet放到Batch中。
  2. 在Batch每次生成的时候都会调用latestLeaderOffsets查看最近的offSet,此时的offSet就会与上一个offSet相减获得这个Batch的范围。这样就可以知道读那些数据。

 

分享到:
评论

相关推荐

    sparkStreaming实战学习资料

    Spark核心概念简介: Spark使用maven进行打包(减少jar包大小): Spark中的(弹性分布式数据集)简称RDD: Spark中的Transformation操作之Value数据类型的算子: Spark中的Transformation操作之Key-Value数据类型的算子: ...

    Spark-2.3.1源码解读

    Spark-2.3.1源码解读。 Spark Core源码阅读 Spark Context 阅读要点 Spark的缓存,变量,shuffle数据等清理及机制 Spark-submit关于参数及部署模式的部分解析 GroupByKey VS ReduceByKey OrderedRDDFunctions...

    Hadoop原理与技术Spark Streaming操作实验

    一、实验目的 1.理解Spark Streaming的工作流程。 2.理解Spark Streaming的工作原理。 3.学会使用Spark Streaming处理流式数据。...(二)Spark Streaming处理RDD队列流 (三)Spark Streaming处理文件流

    基于Spark Streaming的大数据实时流计算平台和框架,并且是基于运行在yarn模式运行的spark streaming

    一个完善的Spark Streaming二次封装开源框架,包含:实时流任务调度、kafka偏移量管理,web后台管理,web api启动、停止spark streaming,宕机告警、自动重启等等功能支持,用户只需要关心业务代码,无需关注繁琐的...

    Scala代码积累之spark streaming kafka 数据存入到hive源码实例

    Scala代码积累之spark streaming kafka 数据存入到hive源码实例,Scala代码积累之spark streaming kafka 数据存入到hive源码实例。

    example-spark:Spark,Spark Streaming和Spark SQL单元测试策略

    example-spark:Spark,Spark Streaming和Spark SQL单元测试策略

    CCTC 2016 腾讯林立伟:Spark Streaming在腾讯广点通的应用

    该文档来自CCTC 2016中国云计算技术大会。腾讯高级软件工程师林立伟发表的题为“Spark Streaming在腾讯广点通的应用”的主题演讲,欢迎下载!

    spark流数据处理:SparkStreaming的使用

    SparkStreaming是Spark核心API的扩展,用于可伸缩、高吞吐量、可容错地处理在线流数据。SparkStreaming可以从很多数据源获取数据,比如:Kafka、Flume、Twitter、ZeroMQ、Kinesis或TCP连接等,并可以用很多高层算子...

    sparkstreaming.zip

    java的sparkstreaming连接kafka的例子,kafka生产者生产消息,消费者读取消息,sparkstreaming读取kafka小区并进行存储iotdb数据库。

    spark Streaming和structed streaming分析

    spark Streaming和structed streaming分析,理解整个 Spark Streaming 的模块划分和代码逻辑。

    sparkStreaming消费数据不丢失

    sparkStreaming消费数据不丢失,sparkStreaming消费数据不丢失

    Spark推荐系统源码.zip

    推荐服务:Spark Streaming 数据集格式 商品数据集(Product) 字段名 类型 描述 说明 _id 自动生成 productId int 商品 id name String 商品名称 imageUrl String 商品图片 categories String 商品分类 由 | ...

    SparkStreaming练习源码

    随着大数据的快速发展,业务场景越来越复杂,离线式的批处理框架 MapReduce 已经不能满足业务,大量的场景需要实时的数据处理结果来进行分析,决策。例如实时的用户推荐,在 618 这样的刺激环境下普通历史数据的推荐...

    SparkStreaming源码解读之数据清理内幕彻底解密

    c)源码解析SparkStreaming数据清理的工作无论是在实际开发中,还是自己动手实践中都是会面临的,Spark Streaming中BatchDurations中会不断的产生RDD,这样会不断的有内存对象生成,其中包含元数据和数据本身。由此...

    spark-streaming-exercises:Spark Streaming练习的骨架

    该项目提供了一组实用程序,以便使用Spark Streaming开发不同的练习。 当前,该项目仅包含一个日志事件生成器。 事件产生器 事件生成器通过常见的OS套接字以纯文本格式生成一系列日志事件。 该组件背后的思想是基于...

    spark之sparkStreaming 理解

    spark之sparkStreaming 理解,总结了自己的理解,欢迎大家下载观看!

    SparkStreaming流式日志过滤与分析

    (1)利用SparkStreaming从文件目录读入日志信息,日志内容包含: ”日志级别、函数名、日志内容“ 三个字段,字段之间以空格拆分。请看数据源的文件。 (2)对读入都日志信息流进行指定筛选出日志级别为error或warn...

    spark streaming

    spark streaming streaming

    word源码java-sparkstreaming:SparkStreaming实时流处理项目实战

    word源码java [TOC] 第1章 课程介绍 Spark版本升级 第2章 初识实时流处理 一、业务现状分析 二、离线与实时对比 三、框架对比 四、架构与技术选型 五、应用 第3章 分布式日志收集框架Flume 一、业务现状分析 二、...

Global site tag (gtag.js) - Google Analytics