Storm 和Spark Streaming 都是分布式流处理的开源框架。这里将它们进行比较并指出它们的重要的区别。
处理模型,延迟
虽然这两个框架都提供可扩展性和容错性,它们根本的区别在于他们的处理模型。而Storm处理的是每次传入的一个事件,而Spark Streaming是处理某个时间段窗口内的事件流。因此,Storm处理一个事件可以达到秒内的延迟,而Spark Streaming则有几秒钟的延迟。
容错、数据保证
在容错数据保证方面的权衡是,Spark Streaming提供了更好的支持容错状态计算。在Storm中,每个单独的记录当它通过系统时必须被跟踪,所以Storm能够至少保证每个记录将被处理一次,但是在从错误中恢复过来时候允许出现重复记录。这意味着可变状态可能不正确地被更新两次。
另一方面,Spark Streaming只需要在批级别进行跟踪处理,因此可以有效地保证每个mini-batch将完全被处理一次,即便一个节点发生故障。(实际上,Storm的 Trident library库也提供了完全一次处理。但是,它依赖于事务更新状态,这比较慢,通常必须由用户实现。)
简而言之,如果你需要秒内的延迟,Storm是一个不错的选择,而且没有数据丢失。如果你需要有状态的计算,而且要完全保证每个事件只被处理一次,Spark Streaming则更好。Spark Streaming编程逻辑也可能更容易,因为它类似于批处理程序(Hadoop),特别是在你使用批次(尽管是很小的)时。
实现,编程api
Storm初次是由Clojure实现,而 Spark Streaming是使用Scala. 如果你想看看代码还是让自己的定制时需要注意的地方,这样以便发现每个系统是如何工作的。Storm是由BackType和Twitter开发; Spark Streaming是在加州大学伯克利分校开发的。
Storm 有一个Java API, 也支持其他语言,而Spark Streaming是以Scala编程,当然也支持Java
Spark Streaming一个好的特性是其运行在Spark上. 这样你能够你编写批处理的同样代码,这就不需要编写单独的代码来处理实时流数据和历史数据。
产品支持
Storm已经发布几年了,在Twitter从2011年运行至今,同时也有其他公司使用,而Spark Streaming是一个新的项目,它从2013年在Sharethrough有一个项目运行。
Hadoop支持
Storm是一个 Hortonworks Hadoop数据平台上的流解决方案,而Spark Streaming有 MapR的版本还有Cloudera的企业数据平台,Databricks也提供Spark支持。
集群管理集成
尽管两个系统都运行在它们自己的集群上,Storm也能运行在Mesos, 而Spark Streaming能运行在YARN 和 Mesos上。
分享到:
相关推荐
Flink,Storm,Spark Streaming三种流框架的对比分析。比较清晰明确
讲述Storm与sparkStreaming分别用法与区别,在操作流程等。
spark Streaming的原理介绍和与storm的对比
flink,spark streaming,storm框架对比,
藏经阁-Lego-Like Building Blocks of Storm and Spark Streaming Pipel
而流处理则是直接对运动中的数据的处理,在接收...+ 能够和 Spark 其他模块无缝集成,将流处理与批处理完美结合; + Spark Streaming 可以从 HDFS,Flume,Kafka,Twitter 和 ZeroMQ 读取数据,也支持自定义数据源。
15丨流式计算的代表:Storm、Flink、SparkStreaming.html
1.什么是SparkStreaming?2.SparkStreaming可以接受那些数据源?3.Dstream,我们可以进行哪两种操作?Sparkstreaming:构建在Spark上处理Stream数据的框架,基本的原理是将Stream数据分成小的时间片断(几秒),以...
本文主要调研了Apache Kafka、Apache Flink、Apache Storm、Apache Apex和Apache...3)通过Hibench进行了Flink、Storm和Spark Streaming的比较测试;4)进行了Apex的简单测试;5)对以上流式大数据系统进行了总结分析。
Storm以及离线数据平台的...SparkStreaming作为Spark整体解决方案中实时数据处理部分,本质上仍然是基于Spark的弹性分布式数据集(ResilientDistributedDatasets:RDD)概念。SparkStreaming将源头数据划分为很小的批,
Leverage Spark's powerful built-in libraries, including Spark SQL, Spark Streaming, and MLlib Use one programming paradigm instead of mixing and matching tools like Hive, Hadoop, Mahout, and Storm ...
代码已被修改以与 Spark Streaming 一起使用。 此实用程序将有助于使用 Spark Streaming 从 Kafka 提取消息,并更好地处理 Kafka 偏移量和处理故障。 这个消费者已经实现了一个自定义可靠接收器,它使用 Kafka ...
本文主要记录一些关于Flink与storm,spark的区别, 优势, 劣势, 以及为什么这么多公司都转向Flink.这是对Flink最简单的认识, 也最容易引起疑惑, 它和storm和spark的区别在哪里? storm是基于流计算的, 但是也可以模拟...
每周内更新 spark streaming 所遇到的公司项目中问题。我们是菜鸟,但我们愿意踩坑。我们是使用者,但我们不想跟storm等流式对比。我们更是spark爱好者,我们想把每天遇到的问题记录下来,share to everyone。我们有...
BDAS包含了Spark、Shark(相当于Hive)、BlinkDB、Spark Streaming(消息实时处理框架,类似Storm)等等 3. Spark与MapReduce 优势: MapReduce通常将中间结果放到HDFS上,Spark是基于内存并行大数据框架,中间...
kafka-storm-starter:代码示例显示了如何将Apache Kafka 0.8+与Apache Storm 0.9+和Apache Spark Streaming 1.1+集成在一起,同时使用Apache Avro作为数据序列化格式
Spark包含了大数据领域常见的各种计算框架:比如Spark Core用于离线计算,Spark SQL用于交互式查询,Spark Streaming用于实时流式计算,Spark MLlib用于机器学习,Spark GraphX用于图计算。 Spark主要用于大数据的...
关于学习 Spark 的部分,英文好点的话,跟着 ...当然,学习 Spark 时最好还是有一些前置技能比较好,比如使用过 Storm 之类的,就更容易上手了。 欢迎提出任何建议,更欢迎加入我们一起来学习,go far,go together.