Storm风暴和Spark Streaming火花流都是分布式流处理的开源框架。这里将它们进行比较并指出它们的重要的区别。


处理模型,延迟
虽然这两个框架都提供可扩展性和容错性,它们根本的区别在于他们的处理模型。

Storm可以实现正真流式实时的处理数据,例如每次处理一条消息,这样,延迟就可以控制在秒级以下,实时性很高。

而Spark Streaming的本质其实还是批量处理,只是这个批量是微批量,在短的时间窗口内进行数据实时处理,通常延迟在秒级左右,实时性相对较弱。

Storm处理的是每次传入的一个事件,而Spark Streaming是处理某个时间段窗口内的事件流。因此,Storm处理一个事件可以达到秒内的延迟,而Spark Streaming则有几秒钟的延迟。

容错、数据保证

在数据容错能力方面,spark streaming做的比storm好一些,它的容错是通过状态记录去实现的。
在容错数据保证方面的权衡是,Spark Streaming提供了更好的支持容错状态计算。在Storm中,每个单独的记录当它通过系统时必须被跟踪,所以Storm能够至少保证每个记录将被处理一次,但是在从错误中恢复过来时候允许出现重复记录。这意味着可变状态可能不正确地被更新两次。

另一方面,Spark Streaming只需要在批级别进行跟踪处理,因此可以有效地保证每个mini-batch将完全被处理一次,即便一个节点发生故障。(实际上,Storm的 Trident library库也提供了完全一次处理。但是,它依赖于事务更新状态,这比较慢,通常必须由用户实现。)

而storm则不一样,storm对每一条数据进行处理标记,从而进行跟踪数据的处理情况,它只能保证每条数据被处理一次,但实际情况是,在发生错误的时候,这条数据是被处理多次的。

这意味着,更新多次的时候可能会导致数据不正确。

而spark的批处理特点,能够保证每个批处理的所有数据只处理一次,保证数据不会在恢复的时候错乱(批处理重新执行)。

storm提供的Trident库虽然能够保证在数据容错时只被处理一次,但它很大程度上依赖于事务的状态更新,并且这个过程相对较慢,更甚者,这个过程是需要用户自己去实现。

简而言之,如果你需要秒内的延迟,Storm是一个不错的选择,而且没有数据丢失。如果你需要有状态的计算,而且要完全保证每个事件只被处理一次,Spark Streaming则更好。Spark Streaming编程逻辑也可能更容易,因为它类似于批处理程序(Hadoop),特别是在你使用批次(尽管是很小的)时。

实现,编程api
Storm初次是由Clojure实现,而 Spark Streaming是使用Scala. 如果你想看看代码还是让自己的定制时需要注意的地方,这样以便发现每个系统是如何工作的。Storm是由BackType和Twitter开发; Spark Streaming是在加州大学伯克利分校开发的。

在语言支持上,Storm提供了Java API,同时也支持多语言(在多语言的支持上,虽然支持,但是通常除了Clojure、Java、Python等几种语言,其他语言进行开发还是很困难的,最常用应该是java)。

Spark Streaming支持Scala、Java、Python等几种语言(spark最合适的编程语言是scala,虽然也支持java,但实现起来很麻烦)。

Spark Streaming一个好的特性是其运行在Spark上. 这样你能够你编写批处理的同样代码,这就不需要编写单独的代码来处理实时流数据和历史数据。

产品支持
Storm已经发布几年了,在Twitter从2011年运行至今,同时也有其他公司使用,而Spark Streaming是一个新的项目,它从2013年在Sharethrough有一个项目运行。

Storm是由BackType和Twitter开发的(在2013年9月时,由Apache接手),而Spark Streaming则是由UC Berkeley开发的。


Hadoop支持
Storm是一个 Hortonworks Hadoop数据平台上的流解决方案,而Spark Streaming有 MapR的版本还有Cloudera的企业数据平台,Databricks也提供Spark支持。

集群管理集成
尽管两个系统都运行在它们自己的集群上,Storm也能运行在Mesos, 而Spark Streaming能运行在YARN 和 Mesos上

转载于:https://www.cnblogs.com/JuneW/p/7402780.html

Storm vs. Spark Streaming相关推荐

  1. 实时流处理框架Storm、Spark Streaming、Samza、Flink,孰优孰劣?!

    https://mp.weixin.qq.com/s?__biz=MzU1NDA4NjU2MA==&mid=2247486490&idx=1&sn=e25a05be8cf98c ...

  2. 实时流处理Storm、Spark Streaming、Samza、Flink孰优孰劣

    From http://www.dataguru.cn/article-9532-1.html 分布式流处理需求日益增加,包括支付交易.社交网络.物联网(IOT).系统监控等.业界对流处理已经有几种适 ...

  3. 大数据分析处理框架——离线分析(hive,pig,spark)、近似实时分析(Impala)和实时分析(storm、spark streaming)...

    大数据分析处理架构图 数据源: 除该种方法之外,还可以分为离线数据.近似实时数据和实时数据.按照图中的分类其实就是说明了数据存储的结构,而特别要说的是流数据,它的核心就是数据的连续性和快速分析性: 计 ...

  4. Storm和MR及Spark Streaming的区别

    1.Storm和MR对比 Storm进程常驻内存,数据不经过磁盘,在内存中处理,数据通过网络传导.是流式处理框架,体现出了实时性. MR是为TB.PB级别数据设计的批处理离线计算框架 2.Storm和 ...

  5. 流式计算的代表:Storm、Flink、Spark Streaming

    learn from 从0开始学大数据(极客时间) 文章目录 1. Storm 2. Spark Streaming 3. Flink 对存储在磁盘上的数据进行大规模计算处理,大数据批处理 对实时产生 ...

  6. Spark Streaming实践和优化

    2019独角兽企业重金招聘Python工程师标准>>> Spark Streaming实践和优化 博客分类: spark 在流式计算领域,Spark Streaming和Storm时 ...

  7. Spark Streaming高级特性在NDCG计算实践

    从storm到spark streaming,再到flink,流式计算得到长足发展, 依托于spark平台的spark streaming走出了一条自己的路,其借鉴了spark批处理架构,通过批处理方 ...

  8. Spark Streaming(一)概述

    需求 统计主站每个(指定)课程访问的客户端.地域信息分布 地域:IP转换 客户端: useragent获取 ===> 如上两个操作:采用(Spark/MapReduce)的方式进行统计 实现步骤 ...

  9. 用 Flink 取代 Spark Streaming,知乎实时数仓架构演进【推荐】

    "数据智能" (Data Intelligence) 有一个必须且基础的环节,就是数据仓库的建设,同时,数据仓库也是公司数据发展到一定规模后必然会提供的一种基础服务.从智能商业的角 ...

  10. Spark Streaming 实战案例(一)

    本节主要内容 本节部分内容来自官方文档:http://spark.apache.org/docs/latest/streaming-programming-guide.html#mllib-opera ...

最新文章

  1. python与excel的差别-python3与Excel的完美结合
  2. python语言及其应用-Python语言及其应用.PDF
  3. 两张图看懂GDT、GDTR、LDT、LDTR的关系
  4. 关闭Windows不必要服务,电脑更安全
  5. 2019DTCC大会分享:分布式数据库全局读一致性
  6. 【原创】构建高性能ASP.NET站点 开篇
  7. 使用命令行工具创建WildFly OpenShift应用程序
  8. 单链表逆序的多种方式
  9. leetcode - 638. 大礼包
  10. PIE SDK矢量数据编辑的撤销和回退
  11. ExComboBoxColor 控件
  12. idea中编辑*.vue文件没有任何提示
  13. [leetcode]Longest Consecutive Sequence
  14. [转]C++编译链接过程详解
  15. otool介绍(转http://www.mc2lab.com/?p=68)
  16. 样条曲线(spline)
  17. 坯子库无法一键安装插件没用_坯子插件库的下载地址、安装以及运用办法
  18. Rust学习:13.1_返回值和错误处理之panic 深入剖析
  19. java isprime函数,Java - isPrime函数
  20. 【GZH逸佳君】:送你300集基础AI教程+6套高级设计教程+20G素材,学会就能做设计

热门文章

  1. 一场让我持续懵比的面试
  2. 奇虎360开源其日志搜索引擎,可处理百万亿级的数据
  3. 90后IT男被准丈母娘拒绝:家境不重要,重要的是…戳中痛处
  4. 开发者生态与双引擎:华为的雄心壮志!
  5. 你知道 Google X 神秘实验室创始人的故事么?
  6. oracle sql语句_7个维度查看oracle执行计划的sql语句执行效率
  7. 删除HTML标签的正则表达式
  8. latex句首缩进空格
  9. 贝叶斯思维 统计建模的Python学习法
  10. HDOJ 2870 Largest Submatrix