Spark Streaming与Storm都可以⽤于进⾏实时流计算,但是他们两者的区别是⾮常⼤的。
1、Storm的优势在于以下两个⽅⾯:⼀⽅⾯,Spark Streaming和Storm的计算模型完全不⼀样。Spark Streaming是基于RDD的,因此需要将⼀⼩段时间内的,⽐如1秒内的数据,收集起来,作为⼀个RDD,然后再针对这个batch的数据进⾏处理。
⽽Storm却可以做到每来⼀条数据,都可以⽴即进⾏处理和计算。因此,Spark Streaming只能称作准实时的流计算框架,⽽Storm是真正意义上的实时计算框架;另⼀⽅⾯,Storm⽀持在分布式流式计算程序运⾏过程中,可以动态地调整并⾏度,从⽽动态提⾼并发处理能⼒。⽽Spark Streaming是⽆法动态调整并⾏度的;
2、Spark Streaming的优势在于:⼀⽅⾯,由于Spark Streaming是基于batch进⾏处理的,因此相较于Storm基于单条数据进⾏处理,具有数倍甚⾄数⼗倍的吞吐量;另⼀⽅⾯,Spark Streaming由于⾝处于Spark⽣态圈内,因此可以和Spark Core、SparkSQL、Spark MLlib、Spark GraphX进⾏⽆缝整合。流式处理完的数据,可以⽴即进⾏各种map、reduce转换操作,可以⽴即使⽤sql进⾏查询,甚⾄可以⽴即使⽤machine learning或者图计算算法进⾏处理。这种⼀站式的⼤数据处理功能和优势,是Storm⽆法匹敌的。
3、综合上述来看,通常在对实时性要求特别⾼,⽽且实时数据量不稳定,⽐如在⽩天有⾼峰期的情况下,可以选择使⽤Storm。但是如果是对实时性要求⼀般,允许1秒的准实时处理,⽽且不要求动态调整并⾏度的话,选择Spark Streaming是更好的选择。