spark Streaming 容错机制的背景

要理解Spark Streaming提供的容错机制,先回忆一下Spark RDD的基础容错语义:

1. RDD是不可变的、确定的、可重新计算的、分布式的数据集,每个RDD都会记住确定好的计算操作的血缘关系,这些操作应用在一个容错的数据集上来创建RDD.

2. 如果因为某个Worker节点的失败,导致RDD的某个parititon数据丢失了,那么那个partition额可以通过对原始的容错数据集应用操作血缘,来重新计算出来。

3.所有的RDD transformation操作都是确定的,最后一个被转换出来的RDD的数据,一定是不会因为Spark的失败而丢失的.


Spark操作的通常是容错文件系统中的数据,比如HDFS,因此,所有通过容错数据生成的RDD也是容错的,然而,对于Spark Streaming来说,这却行不通,因为在大多数情况下,数据都是通过网络接收的(除了使用fileStream数据源)。要让Spark Streaming程序中,所有生成的RDD,都达到与普通的Spark程序RDD,相同的容错性,接收到的数据必须被复制到多个Worker节点的Executor内存中,默认的复制因子是2


基于上述理论,在出现失败的事件时,有俩种数据需要被恢复


1. 数据接收到了,并且已经复制过了,--这种数据在一个worker节点挂掉时,是可以继续存活的,因为在其他Worker节点上,还有它的一份副本

2. 数据接收到了,但是正在缓存中,等待复制的--因为还没有复制该数据,因此恢复它的唯一办法就是重新从数据源获取一份


此外,还有俩种失败是我们需要考虑的

1. Worker节点的失败---任何一个运行了Executor的Worker节点的挂掉,都会导致该节点上所有在内存中的数据都会丢失,如果有Receiver运行在该Worker节点上的Executor中,那么缓存的,带复制的数据,都会丢失


2. Driver节点的失败--如果运行Spark Streaming 应用程序的Driver节点失败了,那么显然SparkContext会丢失,那么该Application的所有Executor的数据都会丢失。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值