简单对比Spark和Storm

2013年参与开发了一个类似storm的自研系统, 2014年使用过spark 4个多月,对这两个系统都有一些了解。

下面是我关于这两个系统的简单对比:

Spark:

1. 基于数据并行,https://en.wikipedia.org/wiki/Data_parallelism。相同的操作作用在数据的不同部分,利用transformation的pipeline提高性能。

2. 本质上是batch processing,latency 通常> 1s。

3. RDD是spark的核心,封装了分布式的细节,即partition和根据lineage恢复数据。shuffle牵涉到数据在网络间的移动,为了容错,中间结果要落地磁盘,因此在一些应用中会是瓶颈。

4. RDD是immutable和coarse granularity,简化了设计。

5. 比较像优化(扩展)了MapReduce的计算框架,并将数据放进了内存,加速迭代计算,非常适合于迭代式应用,比如机器学习,adhoc查询,图计算等。

Storm:

1. 基于任务并行。https://en.wikipedia.org/wiki/Task_parallelism。请求(或者说event)流进系统依次被topology上的task执行。不同task是并行(concurrent)执行。

2. 本质是realtime processing, latency 通常 < 1s。(Storm Trident支持批处理)。

3. 资源管理(在哪些机器上起task)和task间通信是storm的核心。

4. 比较像传统的实时后台系统多个模块(application)拼接成一个大的应用。

 

所以,可以看到spark和storm有不同的应用场景。能和storm比较的是spark streaming. spark streaming是一个spark的流式处理器,

基本的原理是:将一个时间窗口的数据收集起来,转换成RDD,再根据业务逻辑生成新的RDD,最后遍历结果RDD,把数据发出去。

spark streaming是一个分布式系统,也有分布式系统的复杂性。比如,receiver failure的时候,可能会丢数据。

 

参考资料:

1. spark paper。http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf

2. committer的报告。Yahoo compares Storm and Spark。http://www.slideshare.net/ChicagoHUG/yahoo-compares-storm-and- spark?ref=http://yahoohadoop.tumblr.com/post/98213421641/storm-and-spark-at-yahoo-why-chose-one-over-the

3. committer的报告。storm和spark streaming的对比。http://www.slideshare.net/ptgoetz/apache-storm-vs-spark-streaming

转载于:https://www.cnblogs.com/Torstan/p/4646750.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值