流式大数据处理的三种框架:Storm,Spark和Flink

转载 2018年04月17日 21:42:37

storm、spark streaming、flink都是开源的分布式系统,具有低延迟、可扩展和容错性诸多优点,允许你在运行数据流代码时,将任务分配到一系列具有容错能力的计算机上并行运行,都提供了简单的API来简化底层实现的复杂程度。

Apache Storm

Storm中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology)。这个拓扑将会被提交给集群,由集群中的主控节点(master node)分发代码,将任务分配给工作节点(worker node)执行。一个拓扑中包括spout和bolt两种角色,其中spout发送消息,负责将数据流以tuple元组的形式发送出去;而bolt则负责转换这些数据流,在bolt中可以完成计算、过滤等操作,bolt自身也可以随机将数据发送给其他bolt。由spout发射出的tuple是不可变数组,对应着固定的键值对。


Apache Spark

Spark Streaming是核心Spark API的一个扩展,它并不会像Storm那样一次一个地处理数据流,而是在处理前按时间间隔预先将其切分为一段一段的批处理作业。Spark针对持续性数据流的抽象称为DStream(DiscretizedStream),一个DStream是一个微批处理(micro-batching)的RDD(弹性分布式数据集);而RDD则是一种分布式数据集,能够以两种方式并行运作,分别是任意函数和滑动窗口数据的转换。


Apache Flink

Flink 是一个针对流数据和批数据的分布式处理引擎。它主要是由 Java 代码实现。对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个极限特例而已。再换句话说,Flink 会把所有任务当成流来处理,这也是其最大的特点。Flink 可以支持本地的快速迭代,以及一些环形的迭代任务。并且 Flink 可以定制化内存管理。在这点,如果要对比 Flink 和 Spark 的话,Flink 并没有将内存完全交给应用层。这也是为什么 Spark 相对于 Flink,更容易出现 OOM 的原因(out of memory)。就框架本身与应用场景来说,Flink 更相似与 Storm。

Flink 的架构图。


对比图:


(比较源自大牛的PPT,现在新版storm有很多改进,比如自动反压机制之类,另外storm trident API也能提供有状态操作与批处理等)


怎么选择

如果你想要的是一个允许增量计算的高速事件处理系统,Storm会是最佳选择。

如果你必须有状态的计算,恰好一次的递送,并且不介意高延迟的话,那么可以考虑Spark Streaming,特别如果你还计划图形操作、机器学习或者访问SQL的话,Apache Spark的stack允许你将一些library与数据流相结合(Spark SQL,Mllib,GraphX),它们会提供便捷的一体化编程模型。尤其是数据流算法(例如:K均值流媒体)允许Spark实时决策的促进。
Flink支持增量迭代,具有对迭代自动优化的功能,在迭代式数据处理上,比Spark更突出,Flink基于每个事件一行一行地流式处理,真正的流式计算,流式计算跟Storm性能差不多,支持毫秒级计算,而Spark则只能支持秒级计算。


参考:

http://www.csdn.net/article/2015-03-09/2824135

http://www.csdn.net/article/2015-07-16/2825232

Storm,Trident,Spark Streaming,Samza和Flink主流流处理框架比较

文 | Petr Zapletal ,译者 | 侠天   分布式流处理是对无边界数据集进行连续不断的处理、聚合和分析。它跟MapReduce一样是一种通用计算,但我们期望延迟在毫秒或...
  • chenhaifeng2016
  • chenhaifeng2016
  • 2017-03-14 00:16:27
  • 522

流式计算产品对比(Storm、Trident、Spark Streaming、Flink)

产品 模型 API 保证次数 容错机制 状态管理 延时 吞吐量 成熟度 Strom Native 组合式 At-least-once Record A...
  • xianzhen376
  • xianzhen376
  • 2016-04-10 17:01:36
  • 3224

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

From http://www.dataguru.cn/article-9532-1.html 分布式流处理需求日益增加,包括支付交易、社交网络、物联网(IOT)、系统监控等。业界对...
  • textboy
  • textboy
  • 2016-09-23 15:42:12
  • 5856

大数据处理引擎Spark与Flink对比分析!

大数据技术正飞速地发展着,催生出一代又一代快速便捷的大数据处理引擎,无论是Hadoop、Storm,还是后来的Spark、Flink。然而,毕竟没有哪一个框架可以完全支持所有的应用场景,也就说明不可能...
  • dashenghuahua
  • dashenghuahua
  • 2016-12-14 09:48:17
  • 642

从Storm和Spark 学习流式实时分布式计算的设计

最近我在做流式实时分布式计算系统的架构设计,而正好又要参见CSDN博文大赛的决赛。本来想就写Spark源码分析的文章吧。但是又想毕竟是决赛,要拿出一些自己的干货出来,仅仅是源码分析貌似分量不够。因此,...
  • anzhsoft2008
  • anzhsoft2008
  • 2014-08-02 17:06:51
  • 41748

流式大数据处理的三种框架:Storm,Spark和Samza

摘要:许多分布式计算系统都可以实时或接近实时地处理大数据流。本文将对Storm、Spark和Samza等三种Apache框架分别进行简单介绍,然后尝试快速、高度概述其异同。 许多分布式计算系...
  • gaowenhui2008
  • gaowenhui2008
  • 2015-03-13 14:18:56
  • 560

流式大数据处理的三种框架:Storm,Spark和Samza

许多分布式计算系统都可以实时或接近实时地处理大数据流。本文将对三种Apache框架分别进行简单介绍,然后尝试快速、高度概述其异同。Apache Storm在Storm中,先要设计一个用于实时计算的图状...
  • qq_38799155
  • qq_38799155
  • 2017-10-28 18:22:20
  • 122

流式大数据处理的三种框架:Storm,Spark和Samz

许多分布式计算系统都可以实时或接近实时地处理大数据流。本文将对三种Apache框架分别进行简单介绍,然后尝试快速、高度概述其异同。 Apache Storm 在Storm中,先要设计一个用...
  • qq_24084925
  • qq_24084925
  • 2017-06-22 14:49:03
  • 192

flink与Spark的对比分析[转]

我们是否还需要另外一个新的数据处理引擎? 当我第一次听到flink的时候这是我是非常怀疑的。在大数据领域,现在已经不缺少数据处理框架了,但是没有一个框架能够完全满足不同的处理需求。 自从Apache ...
  • xy83918
  • xy83918
  • 2017-04-26 10:40:48
  • 1188

MapReduce\Tez\Storm\Spark四个框架的异同

1) MapReduce:是一种离线计算框架,将一个算法抽象成Map和Reduce两个阶段进行 处理,非常适合数据密集型计算。 2) Spark:MapReduce计算框架不适合迭代计算和...
  • cloudeagle_bupt
  • cloudeagle_bupt
  • 2014-01-20 10:20:45
  • 2349
收藏助手
不良信息举报
您举报文章:流式大数据处理的三种框架:Storm,Spark和Flink
举报原因:
原因补充:

(最多只允许输入30个字)