Spark Streaming 源码解析系列
- 0.1 Spark Streaming 实现思路与模块概述
- 1.1 DStream、DStreamGraph 详解
- 1.2 DStream 生成 RDD 实例详解
- 2.1 JobScheduler、Job、JobSet 详解
- 2.2 JobGenerator 详解
- 3.1 Receiver 分发详解
- 3.2 Receiver、ReceiverSupervisor、BlockGenerator、ReceivedBlockHandler 详解
- 3.3 ReceiverTraker、ReceivedBlockTracker 详解
- 4.1 Executor 端长时容错详解
- 4.2 Driver 端长时容错详解
- Q&A 什么是 end to end exactly once?
Structured Streaming 源码解析系列
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Q&A 什么是 end to end exactly once?
[Q] 什么是 end-to-end exactly-once ?
[A] 一般我们把上游数据源 (Source) 看做一个 end,把下游数据接收 (Sink) 看做另一个 end:
Source --> Spark Streaming --> Sink
[end] [end]
目前的 Spark Streaming 处理过程自身是 exactly-once 的,而且对上游这个 end 的数据管理做得也不错(比如在 direct 模式里自己保存 Kafka 的偏移),但对下游除 HDFS 外的如 HBase, MySQL, Redis 等诸多 end 还不太友好,需要 user code 来实现幂等逻辑、才能保证 end-to-end 的 exactly-once。
而在 Spark 2.0 引入的 Structured Streaming 里,将把常见的下游 end 也管理起来(比如通过 batch id 来原生支持幂等),那么不需要 user code 做什么就可以保证 end-to-end 的 exactly-once 了,请见下面一张来自 databricks 的 slide[1]:
- [1] Reynold Xin (Databricks), "the Future of Real-time in Spark", 2016.02, http://www.slideshare.net/rxin/the-future-of-realtime-in-spark.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论