我们知道RDD本身是一个不可变的,可重新计算的、分布式的数据集。每一个RDD都会记住确定好的操作血缘关系。

如果因为某些原因,导致某个worker节点失败,则导致RDD的某个partition数据丢失了,那么那个partition可以通过对原始的容错数据集应用操作血缘,来重新计算。因为HDFS本身是容错文件系统的,所以在HDFS的数据不会丢失,最坏情况无非重新计算而已。

但是对于SparkStreaming,在大多数情况下,都是通过网络接收的数据,要让Spark Streaming程序中,所有生成的RDD,都达到与普通的Spark程序的RDD相同的容错性,接受到的数据必须复制到多个Worker节点上的Executor内存中,默认复制因子是2.

# Worker节点的失败:任何一个运行了Executor的Worker节点失败,都会导致该节点上所有在内存中的数据丢失,如果有Receiver运行在该Worker节点的Executor中,那么缓存的、等待复制的数据,都会丢失

# Driver节点的失败:SparkContext和StreamingContext就丢失,如果我们开启Driver的checkpoint机制,这个时候该应用程序的所有Executor的数据都会丢失。

Spark Streaming容错语义:

流式计算系统的容错语义,通常是以一条记录能够被处理的多少次来衡量。有三种类型的语义:

1 最多一次:每一条记录可能会处理一次,或者根本不处理,可能有数据丢失

2 至少一次:每一条记录会被处理一次或者多次,这种语义比最多一次强点,他确保数据零丢失,但是会导致数据重复消费

3 一次仅且一次:每一条记录只处理一次,没有数据丢失

接收数据的容错语义:

1 基于文件的数据源

如果所有输入的数据都在一个容错的文件系统中,比如HDFS, Spark Streaming一定可以从失败中进行恢复,并且处理所有数据,这就提供了一次仅且一次的语义。

2 基于Receiver的数据源

对于基于Receiver的数据源,容错语义依赖于失败场景和Receiver类型

可靠的Receiver: 这种Receiver会在接收了数据,并且将数据复制之后,对数据源执行确认操作。如果Receiver在数据接收和复制完成之前就失败了,那么数据源对于缓存的数据会接收不到确认,此时Receiver重启之后,数据源会重新发送数据,没有数据丢失

不可靠的Receiver: 这种Receiver不会发送确认操作,因此当worker或者driver节点失败的时候,可能会导致数据丢失

针对不可靠的Receiver可能发生数据丢失问题,那么Spark引入了预写日志的机制,这样就可以保证数据零丢失。这种情况会提供至少一次保障。

计算数据容错:所有接受的数据一定只会被计算一次,这是基于RDD基础语义所保障的,即使有失败,只要接收到的数据还是可以访问的,最后一个计算出来的数据一定是相同的

推送数据容错:output操作默认只能保证至少一次的语义,因为依赖于输出类型以及底层的系统语义支持,比如是否有事务机制来确保一次仅且一次的语义

Spark Streaming之容错机制以及事务语义相关推荐

  1. Spark Streaming的工作机制

    1. Spark Streaming的工作机制 Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的.具备容错机制的实时流数据的处理. 支持从多种数据源获取数据,包括K ...

  2. sparkstreaming监听hdfs目录如何终止_Spark笔试题:Spark Streaming 反压机制

    Spark Streaming 反压机制是1.5版本推出的特性,用来解决处理速度比摄入速度慢的情况,简单来讲就是做流量控制.当批处理时间(Batch Processing Time)大于批次间隔(Ba ...

  3. Spark Streaming的容错和数据无丢失机制(WAL机制)

    实时的流式处理系统必须是7*24运行的,同时可以从各种各样的系统错误中恢复,在设计之处,Spark Streaing就支持driver和worker节点的错误恢复.然后,在使用某些数据源的时候,错误恢 ...

  4. Spark Streaming的WAL机制

    WAL(Write Ahead Logs)是Spark中的一个保障HA(High Available)的机制, 在Hbase中也有应用到 抛开带着很多专业词的场景假设, 我觉得应该把技术上的事情用尽可 ...

  5. Spark Streaming之checkpoint机制

    一 什么类型的数据需要使用checkpoint? Spark Streaming是最需要进行容错的,因为一般都是7 * 24小时运转,所以需要将足够的信息checkpoint到容错的存储系统上,比如H ...

  6. spark基础之spark streaming的checkpoint机制

    一 什么类型的数据需要使用checkpoint? Spark Streaming是最需要进行容错的,因为一般都是7 * 24小时运转,所以需要将足够的信息checkpoint到容错的存储系统上,比如H ...

  7. Spark Streaming 反压机制

    反压机制的引入 默认情况下,Spark Streaming通过receiver以生产者生产数据的速率接收数据,计算过程中会出现批处理时间(Processing Time)大于批间隔时间(Batch I ...

  8. 【spark】RDD容错机制Checkpoint

    持久化的局限 持久化/缓存可以把数据放在内存中,虽然是快速的,但是也是最不可靠的:也可以把数据放在磁盘上,也不是完全可靠的!例如磁盘会损坏等. 问题解决 Checkpoint的产生就是为了更加可靠的数 ...

  9. 35-Spark Streaming反压机制、Spark的数据倾斜的解决和Kylin的简单介绍

    19.6 数据的反压机制⭐️ 反压机制的理解 数据流入的速度远高于数据处理的速度,对流处理系统构成巨大的负载压力,如果不能正确处理,可能导致集群资源耗尽,最终集群崩溃, 因此有效的反压机制(backp ...

最新文章

  1. java平台类成员访问修饰符_JAVA类的修饰符及访问权限
  2. [MYSQL] 如何彻底卸载MYSQL5.x
  3. 亚信安全发布《2022年网络安全发展趋势及十大威胁预测》
  4. 计算机网络应用简介_计算机网络简介
  5. js 返回上一页面_pdf.js实战,含水印、电子签章解决方案
  6. Learning to Reconstruct 3D Human Pose and Shape via Model-fitting in the Loop
  7. OSPFv3中LSA详解(四)——Link LSA详解
  8. windows基础知识总结
  9. c语言数学函数库根号程序,用C 编写程序时根号肿么输入
  10. 录录录屏(video321)--1款亲测好用的免费高清录屏软件。你一定无法拒绝(附使用教程)
  11. 新浪xweibo代码架构分析
  12. c语言电脑蓝屏代码,电脑蓝屏代码0x0000001a的解决方法
  13. word压缩图片怎么弄_教大家WORD插入图片如何批量压缩图片
  14. slite的一些基本介绍
  15. spss pro网络挑战赛A题:人群疏散模拟代码
  16. 使用蒲公英平台测试iOS APP(示例)
  17. 活期账户10亿个+日均交易4亿笔,建设银行如何啃下系统转型的“硬骨头”?
  18. 游戏项目管理经验方法
  19. [CF891E]Lust
  20. window电脑C盘占用过大问题的几种解决方法

热门文章

  1. MySQL执行计划EXPLAIN详解
  2. Python数据结构:二分查找
  3. 两个网口芯片接一个变压器_一看就会:详细讲解网络变压器作用
  4. faster-rcnn tensorflow windows python 训练自己数据
  5. c# static那些事
  6. python自动安装pip教程_谈谈全自动安装常使用的pip install的原理及作用!!!
  7. 嘉奥丰农显示无法连接服务器,Arcaea无法连接服务器如何解决
  8. 在linux中 与 的区别,在linux中,和, |和|| , 与 的区别
  9. opencv ppt效果_opencv几何图形画法
  10. 微服务 数据库耦合_mysql – 与其他服务共享的微服务数据库