Spark Streaming对Exactly Once的实现原理

本文探讨了Spark Streaming如何实现Exactly Once语义,强调了系统整体性的重要性,包括输入源、Spark Streaming计算和输出操作的贡献。文章详细介绍了Spark Streaming的WAL(Write-Ahead Log)在防止数据丢失和failover中的作用,以及其无法解决job运行一半问题的挑战。总结指出,Spark Streaming的Exactly Once依赖于输入源、计算框架和输出操作的协同工作,而Kafka Direct API在确保一致性方面扮演关键角色。
摘要由CSDN通过智能技术生成

昨天看到了这篇文章: 为什么Spark Streaming + Kafka很难保证exactly once? 看过后,对作者对Exactly Once的理解不敢苟同,所以想写这篇文章,阐述一下我对Spark Streaming保证Exactly Once语义的理解。

Exactly Once实现的整体性

首先一个很重要的道理是: 整个系统对exactly once的保证,从来都不是靠系统中某一部分来实现就能搞定的,需要整个流式系统一起努力才可以实现。

对Spark Streaming来说, Exactly once的实现,需要系统中三部分的整体保证: 

    输入源 --> Spark Streaming计算 ---> 输出操作

    "输入源"对于exactly once的实现: Kafka的directly API其实就是在解决输入源输入数据的exactly once语义;

    "Spark Streaming"部分的exactly once的shi实现: 使用WAL保证(注意我没有提checkpoint和replication, 因为这两个failover机制,并不是专门解决exactly once这个问题的)。

    "输出操作"对于exactly once的实现: 需要输出结果保证幂等性, 这点官方文档已经说的比较清楚:

In order to achieve exactly-once semantics for output of your results, your output operation that saves the

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值