spark Streaming中的容错机制

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

接收数据的容错语义

1. 基于文件的数据源

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

 

2. 基于Receiver的数据源

 

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

 

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

 

3. 基于Kafka Direct API,可以保证,所有从Kafka接收到的数据

 

输出容错

使用事务更新:所有的操作都应该做成事务的,从而让写入操作执行一次且仅一次,给每个batch的数据赋予唯一的标识,然后更新的时候判定,如果数据库中还没有该唯一标识,那么就更新,如果有唯一标识,那么就不更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值