Spark Streaming与Storm的区别
-
Spark Streaming和Storm最大的区别在于,SparkStreaming无法实现毫秒级的流计算,而Storm可以实现毫秒级响应。
-
Streaming无法实现毫秒级的流计算,是因为其将流数据按批处理窗口大小(通常在0.5~2秒之间)分解为一系列批处理作业,在这个过程中,会产生多个Spark
作业,且每一段数据的处理都会经过Spark DAG图分解、任务调度过程,因此,无法实现毫秒级相应。Spark
Streaming难以满足对实时性要求非常高(如高频实时交易)的场景,但足以胜任其他流式准实时计算场景。相比之下,Storm处理的单位为Tuple,只需要极小的延迟。 -
Streaming构建在Spark上,一方面是因为Spark的低延迟执行引擎(100毫秒左右)可以用于实时计算,另一方面,相比于Storm,RDD数据集更容易做高效的容错处理。此外,Spark
Streaming采用的小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法,因此,方便了一些需要历史数据和实时数据联合分析的特定应用场合。