1. 介绍
这三个计算框架常常被拿来比较。从我的角度来看,三者的比较可以分为两类(mini-batches vs. streaming)。spark streaming属于微批量的伪流式准实时计算框架(spark本身属于批处理框架)。而flink和storm则作为典型的实时流处理框架。
2. spark vs flink
两者虽然有很多设计实现思路上比较接近以及互相学习,但是主要区别还是mini-batch和streaming的选择上。根据实际场景在吞吐量和实时性上做权衡。
3. flink vs storm
名称 | 批处理 | 数据处理保证 | api level | 容错机制 |
---|---|---|---|---|
storm | 不支持 | at least once(实现采用record-level acknowledgments),Trident可以支持storm 提供exactly once语义 | low | record-level acknowledgments |
flink | 支持 | exactly once(实现采用Chandy-Lamport 算法,即marker-checkpoint ) | high | marker-checkpoint |
4. 其他资料
5. 总结
我写的比较简略。强烈建议看看下面我罗列的参考资料,都写的很不错。
参考资料:
- What is/are the main difference(s) between Flink and Storm?
- Introduction to Apache Flink for Spark Developers : Flink vs Spark
- Apache Flink和Apache Spark有什么异同?它们的发展前景分别怎样?
- 实时流处理Storm、Spark Streaming、Samza、Flink孰优孰劣?
- Spark与Flink:对比与分析