这三个计算框架经常被拿来比较。从个人角度来看,三者的比较能够分为两类(mini-batches vs. streaming)。spark streaming属于微批量的伪流式准实时计算框架(spark自己属于批处理框架)。而flink和storm则做为典型的实时流处理框架。html
二者虽然有不少设计实现思路上比较接近以及互相学习,可是主要区别仍是mini-batch和streaming的选择上。根据实际场景在吞吐量和实时性上作权衡。算法
名称 | 批处理 | 数据处理保证 | 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 |
我写的比较简略。强烈建议看看下面我罗列的参考资料,都写的很不错。api
参考资料:框架