Spark Streaming和Storm之间的区别

时间:2014-11-22 09:09:04

标签: apache-storm spark-streaming

我正在对实时推特流媒体数据进行一些分析。我听说过Spark Streaming。我想知道哪些最适合实时流数据的分析,因为我的数据来源非常快。

2 个答案:

答案 0 :(得分:3)

我推荐这个关于这个主题的演讲: http://fr.slideshare.net/ptgoetz/apache-storm-vs-spark-streaming

事实上,apache storm是一个真正的流式架构,事件是逐个管理的,如果你想对它们进行分组,你必须为此设计一个拓扑。它在延迟和设计方面是最强大的。但它当然很复杂,你必须正确设计你想要的东西。

另一方面,apache spark是一个微批处理架构,它就像hadoop,但每隔x秒执行一次,在定义的时间窗口上产生微批量的数据。因为它看起来像一个批处理解决方案,它似乎更简单,如果你不想要延迟<几秒钟。

答案 1 :(得分:3)

除了由@zenbeni链接的非常好的演示文稿之外,我想基于Storm和Spark流媒体的第一手经验添加一些特定点,特别是关于您的用例(Twitter数据)。

  • Twitter本身将Storm用于其实时流处理管道的许多部分。因此,如果您想要进行的处理类型相似,那么Storm是一个不错的选择。
  • Storm的多语言支持很棒。但是很难传递错误。例如,如果您从Java bolt调用Python代码并且Python螺栓中发生异常,则将此异常传播回Java代码并不容易。
  • 如果您的分析仅基于单个推文,那么Storm可能会更好。但是,如果您需要进行一些聚合或迭代分析,那么您还需要在Storm中进行微量分析。这实际上意味着你必须在一堆螺栓中存储状态。
  • 最后,通常需要同时进行流处理和批处理。当您需要将流处理与批处理交互式迭代处理混合在一起时,Spark会闪耀。事实上,我不清楚你应该如何迭代处理Storm。