作者:ezaya
链接:https://www.zhihu.com/question/403840013/answer/1317631316
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录

一、MapReduce

二、Spark

三、Flink & Storm

四、总结


这四个项目能放在一起比较的背景应该是分布式计算的演进过程。

一、MapReduce

开源分布式计算的第一个流行的框架是 Hadoop 项目中的 MapReduce 模块。它将所有计算抽象成 Map 和 Reduce 两个阶段,在计算时通过增加机器,并行的读取数据文件,进行 Map 或 Reduce 的操作,并将结果写到文件中。如此反复得到最终的结果。

上面过程中,每个 Map 和 Reduce 阶段所能表达的计算逻辑是有限的,因此完整的业务逻辑往往包含了多个阶段。注意到每个阶段都有读取数据文件和数据写出到文件的开销,对于同一个任务的中间结果,其唯一用途就是被下一阶段读取,且读后就成为垃圾文件,对中间结果落盘显然是不合理的重大开销。

二、Spark

基于这样的观察,Spark 提出了内存计算的概念,核心思想就是中间结果尽量不落盘。依靠这样的基础思想,Spark 相对 Hadoop MapReduce 获得了千百倍的性能提升,代价是更高的内存开销以及 OOM 风险。经历过 Spark 1.x 年代的研发和运维应该都对此深有体会。

三、Flink & Storm

Storm 和 Flink 完全是另一个路数。我们这里讨论 Flink 的流计算部分,而不讨论它早年被 Spark 全方位吊打的 DataSet 批计算部分。前面讨论的批计算,其特点是输入数据集是事先知晓且有限的,而流计算的世界观认为输入数据集是无限的消息流。因此,它们的计算逻辑处理的不是一批一批的数据,而是一条一条连绵不断的消息。

Storm 通过产生数据流的源头和消费数据流的管道来抽象流计算的世界,Flink 的流计算部分其实大同小异。两者最大的区别或者说 Flink 最大的优势是它拥有内置的状态管理和精确一次送达语义的容错机制。Flink 的官方标语就是状态化的流计算,因此这才是它的核心竞争力。有了内置的状态管理,Flink 相比 Storm 就少了对接外部状态存储的负担。要知道,每次手动对接外部存储,重复开发量是巨大的,而且涉及两个分布式项目的端到端一致性保证,将变得非常复杂。

四、总结

以上就是对这四个项目口水化的介绍,其使用场景大抵如下。

Spark 作为批计算的王者存在,基本处理所有分布式批处理的场景。有的时候会使用 Hadoop MapReduce 是因为存量业务没有明显的性能瓶颈,不需要故意开发迁移。另一种情况是在没有严格性能要求的情况下,减少 Spark 的部署运维成本,简单使用 HDFS 集群直接支持的 MapReduce 计算任务。还有一种情况是早年某些 MapReduce 作业的 DSL 的存量,传递依赖 MapReduce 且同样没有升级的强需求,例如 Pig 程序。

Flink 作为流计算的标杆,基本覆盖了阿里巴巴内部的流计算场景。但是,在阿里强推之前,或者从技术上说被双十一磨砺之前,大部分公司的伪实时需求可以通过 Spark Streaming 或者 Storm 乃至订阅 Kafka 加消费者任务来解决。因此市面上非 Flink 的流计算大抵是过时或者有局限性技术的存量。Flink 的核心优势在于内置状态管理以及先发优势带来的较为完善的功能支持,这方面解决了流计算开箱即用的问题,以及双十一磨砺的性能优势,目前仍然是流计算框架的跑分榜第一。

当然,这些项目都还有其他内容。例如 Hadoop 的 YARN 资源管理框架,Spark 跟高迭代的机器学习的整合等等。同时,外围还有数据湖技术和 HTAP 以及其他流计算框架在争夺这四款软件的业务场景,那就不是这里一两句话能说完的了。

分布式计算—MapReduce、Spark、Storm、Flink分别适用什么场景相关推荐

  1. 上:Spark VS Flink – 下一代大数据计算引擎之争,谁主沉浮?

    作者简介 王海涛,曾经在微软的 SQL Server和大数据平台组工作多年.带领团队建立了微软对内的 Spark 服务,主打 Spark Streaming.去年加入阿里实时计算部门,参与改进阿里基于 ...

  2. 25.Flink监控\什么是Metrics\Metrics分类\Flink性能优化的方法\合理调整并行度\合理调整并行度\Flink内存管理\Spark VS Flink\时间机制\容错机制等

    25.Flink监控 25.1.什么是Metrics 25.2.Metrics分类 25.2.1.Metric Types 25.2.2.代码 25.2.3.操作 26.Flink性能优化 26.1. ...

  3. 分布式大数据系统概览(HDFS/MapReduce/Spark/Yarn/Zookeeper/Storm/SparkStreaming/Lambda/DataFlow/Flink/Giraph)

    分布式大数据处理系统概览(三)   本博文主要对现如今分布式大数据处理系统进行概括整理,相关课程为华东师范大学数据科学与工程学院<大数据处理系统>,参考大夏学堂,下面主要整理HDFS/Ma ...

  4. Hadoop、spark、Flink、Blink、storm介绍

    1.什么是hadoop(搭建集群) Hadoop是由java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce. HDFS是一个分布式 ...

  5. 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink——flink支持SQL,待看

    简介 大数据是收集.整理.处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称.虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性.规模,以及价值在最近几年才 ...

  6. 从Hadoop到Spark和Flink,大数据处理框架十年激荡发展史

    当前这个数据时代,各领域各业务场景时时刻刻都有大量的数据产生,如何理解大数据,对这些数据进行有效的处理成为很多企业和研究机构所面临的问题.本文将从大数据的基础特性开始,进而解释分而治之的处理思想,最后 ...

  7. 从Hadoop到Spark、Flink,大数据处理框架十年激荡发展史

    abstract: 当前这个数据时代,各领域各业务场景时时刻刻都有大量的数据产生,如何理解大数据,对这些数据进行有效的处理成为很多企业和研究机构所面临的问题.本文将从大数据的基础特性开始,进而解释分而 ...

  8. 从Hadoop到Spark、Flink,大数据处理框架十年激荡发展史!

    当前这个数据时代,各领域各业务场景时时刻刻都有大量的数据产生,如何理解大数据,对这些数据进行有效的处理成为很多企业和研究机构所面临的问题.本文将从大数据的基础特性开始,进而解释分而治之的处理思想,最后 ...

  9. 杠上Spark、Flink?Kafka为何转型流数据平台

    AI前线导读: 消息中间件系统(比如RabbitMQ.Kafka.Pulsar等)是现代实时数据或者流数据基础架构的关键环节.它通常作为一个数据管道,链接了各种业务前台和数据后台(比如数仓等).但是随 ...

  10. Spark与Flink:对比与分析

    Spark是一种快速.通用的计算集群系统,Spark提出的最主要抽象概念是弹性分布式数据集(RDD),它是一个元素集合,划分到集群的各个节点上,可以被并行操作.用户也可以让Spark保留一个RDD在内 ...

最新文章

  1. 区别:电感、磁珠和零欧电阻的作用
  2. 操作系统 实验三 进程调度模拟程序
  3. 如何处理alert、confirm、prompt对话框
  4. spring boot高性能实现二维码扫码登录(上)——单服务器版
  5. 畅游互联的API接口如何对接到自己的网站上?
  6. oracle导出报错04063,Oracle EXP导出报错的解决方法
  7. Android APP
  8. (转)华兴资本包凡:我们这么屌,是有原因的
  9. Win10怎么把登录密码去掉
  10. Unity粒子特效UI层级问题
  11. con和com开头单词规律_日语单词靠死记硬背?那你需要看看这篇文章了
  12. mysql备份与恢复方案_MYSQL备份与恢复
  13. 支持向量机_4:Outliers
  14. 学习Java应该关注哪些网站?
  15. Java基础——Arrays类的排序方法
  16. php实现tptp客户端
  17. 【SPSS】回归分析详细操作教程(附案例实战)
  18. html复选框代码隐藏勾勾,[译] 为什么 HTML 中复选框样式难写 — 本文给你答案
  19. beta值是一种风险指数
  20. RTL-8201以太网芯片外围电路

热门文章

  1. shell里面比较大小
  2. orale用户角色管理
  3. 一段始终保持在最底部的div css代码
  4. Emit学习-进阶篇-定义事件
  5. Windows 2003 Server服务器上IIS发布网站具体步骤
  6. view渐变色,透明度渐变
  7. 老王学jsp之dom解析xml
  8. iOS开发笔记[18/50]:在Mac OS X Lion系统中访问~/Library目录都需要点技巧
  9. jQuery防止多次提交
  10. idea常用但容易忘记的快捷键