翻译:http://www.slideshare.net/ptgoetz/apache-storm-vs-spark-streaming
Storm是一个流处理框架同时能做批处理(Trident)
Spark是一个批处理框架同时能做微批处理(Spark Streaming)Apache Storm二套流处理API:
Storm内核(Spouts和Bolts)
.每次一条记录
.低延迟
.操用元组(Tuple)流
Trident(Streams和Operations):
.微批处理
.高吞吐量
.在元组的批次与分区流上操作
可靠性模式:
Core Storm | Storm Trident | Spark Streaming | |
至多一次 | Yes | Yes | No |
至少一次 | Yes | Yes | No* |
精确一次 | No | Yes | Yes* |
*在一些节点失败的情况,Spark Streaming回退到至多一次或者出现数据丢失
最多一次(At-most-once):消息可能会丢失,这通常是最不理想的结果
最少一次(At-least-once):消息可能会再次发送(没有丢失的情况,但是会产生冗余)
恰好一次(Exactly-once):每条消息都被发送过一次且仅仅一次(没有丢失,没有冗余)
编程模型:
Core Storm | Storm Trident | Spark Streaming | |
流元素 | Tuple | Tuple,Tuple Batch,Partition | DSteam |
流源 | Spouts | Spouts,Trident Spouts | HDFS,NetWork |
计算/转换 | Bolts | Filters,Functions,Aggregations,Joins | Transformations,Window Operations |
状态操作 | No(自己实现) | Yes | Yes |
输出/持久化 | Bolts | State,MapState | foreachRDD |