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. 总结

我写的比较简略。强烈建议看看下面我罗列的参考资料,都写的很不错。

参考资料:

  1. What is/are the main difference(s) between Flink and Storm?
  2. Introduction to Apache Flink for Spark Developers : Flink vs Spark
  3. Apache Flink和Apache Spark有什么异同?它们的发展前景分别怎样?
  4. 实时流处理Storm、Spark Streaming、Samza、Flink孰优孰劣?
  5. Spark与Flink:对比与分析