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也能提供有状态操作与批处理等)

怎么选择

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

流式大处理的三种框架对比:Storm,Spark和Flink相关推荐

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

    2019独角兽企业重金招聘Python工程师标准>>> 许多分布式计算系统都可以实时或接近实时地处理大数据流.本文将对三种Apache框架分别进行简单介绍,然后尝试快速.高度概述其异 ...

  2. Storm与Spark、Hadoop三种框架对比

    目录 Storm与Spark.Hadoop三种框架对比 一.Storm与Spark.Hadoop三种框架对比 二.hadoop的应用业务分析 二.浅谈Hadoop的基本原理 Hadoop与Storm的 ...

  3. python 流式计算框架_流式计算的三种框架:Storm、Spark和Flink

    我们知道,大数据的计算模式主要分为批量计算(batch computing).流式计算(stream computing).交互计算(interactive computing).图计算(graph ...

  4. 流式计算的三种框架:Storm、Spark和Flink

    我们知道,大数据的计算模式主要分为批量计算(batch computing).流式计算(stream computing).交互计算(interactive computing).图计算(graph ...

  5. 【2017年第4期】流式大数据实时处理技术、平台及应用

    陈纯 浙江大学计算机科学与技术学院,浙江 杭州 310058 摘要:大数据处理系统根据其时效性可分为批式大数据和流式大数据两类.上述两类系统均无法满足"事中"感知查询分析处理模式的 ...

  6. 全面解析流式大数据实时处理技术、平台及应用

    一. 引言 大数据技术的广泛应用使其成为引领众多行业技术进步.促进效益增长的关键支撑技术.根据数据处理的时效性,大数据处理系统可分为批式(batch)大数据和流式(streaming)大数据两类.其中 ...

  7. 关于流式大数据实时处理技术、平台及应用

    1 引言 大数据技术的广泛应用使其成为引领众多行业技术进步.促进效益增长的关键支撑技术.根据数据处理的时效性,大数据处理系统可分为批式(batch)大数据和流式(streaming)大数据两类.其中, ...

  8. flink 流式处理中如何集成mybatis框架

    flink 中自身虽然实现了大量的connectors,如下图所示,也实现了jdbc的connector,可以通过jdbc 去操作数据库,但是flink-jdbc包中对数据库的操作是以ROW来操作并且 ...

  9. 流式大数据实时处理技术、平台及应用

    大数据技术的广泛应用使其成为引领众多行业技术进步.促进效益增长的关键支撑技术.根据数据处理的时效性,大数据处理系统可分为批式(batch)大数据和流式(streaming)大数据两类.其中,批式大数据 ...

最新文章

  1. Linux用户和组相关的配置文件
  2. hdu 3564(线段树+LIS)
  3. What are training set, validation set and test set?
  4. C++ vector 遍历修改汇总
  5. Python内置数据类型之Dict
  6. 《数学建模:基于R》——1.1 数据的描述性分析
  7. 用Asp.Net创建基于Ajax的聊天室程序
  8. 如何制作一款HTML5 RPG游戏引擎——第二篇,烟雨+飞雪效果
  9. 红帽专家谈 Ceph 与 Gluster 开源存储路线
  10. 2021-09-07python深拷贝和浅拷贝
  11. 查看mysql服务器位置,查看mysql服务器ip地址
  12. USB接口一般的排列方式是:红白绿黑从左到右。颜色含义如下:
  13. 采用汇编语言对c语言函数调用的方法求平均数 汇编实验报告,汇编措辞调用C措辞求平均数.doc...
  14. ei指什么_今天说一下EI是什么
  15. 注意:网站中出现以下违规内容-搜索引擎百度都不收录
  16. Android前端判断敏感词汇
  17. 如何批量修改多个文件的后缀名?
  18. JAVA 11.11
  19. wordpress非插件实现屏蔽英语、日语、俄语、韩语、阿拉伯语、泰语等外语垃圾评论!...
  20. ubuntu系统20.4搭建c语言环境,ubuntu 20.04 中文环境和英文环境切换

热门文章

  1. vue + element UI中国省市区级联数据
  2. 国内外文献下载(万方知网IEEE)
  3. python官网下载太慢?
  4. Netflix Prize数据集详解及数据集下载链接
  5. CTF杂项题基础(1.文件识别与分离及图片隐写)
  6. 23种设计模式-个人笔记(一)
  7. 5种数据压缩算法实现和性能测试
  8. 百家号怎么赚钱,百家号赚钱实操攻略
  9. C++ 类成员函数指针数组应用(一)
  10. 爱奇艺图像算法工程师面试