前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式计算—MapReduce、Spark、Storm、Flink分别适用什么场景

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

作者头像
大数据老哥
发布2021-03-05 14:33:11
1.6K0
发布2021-03-05 14:33:11
举报

原创作者:ezaya

编辑作者:大数据老哥

链接:https://www.zhihu.com/question/403840013/answer/1317631316

导语

相比大家都是用过Hadoop中的MapReduce,Spark,Flink,Storm那大家没有想过它们的使用场景那?今天就给大家分享下,同时我会我准备了好多资源如Flink面试题,Spark面试题,程序员必备软件,hive面试题,Hadoop面试题,Docker面试题,简历模板请去下方链接下载 https://github.com/lhh2002/Framework-Of-BigData对你们有帮助记得star

一、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 以及其他流计算框架在争夺这四款软件的业务场景,那就不是这里一两句话能说完的了。

彩蛋

资源获取 获取Flink面试题,Spark面试题,程序员必备软件,hive面试题,Hadoop面试题,Docker面试题,简历模板,优质的文章等资源请去 下方链接获取 GitHub自行下载 https://github.com/lhh2002/Framework-Of-BigData Gitee 自行下载 https://gitee.com/li_hey_hey/dashboard/projects

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据老哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导语
  • 一、MapReduce
  • 二、Spark
  • 三、Flink & Storm
  • 四、总结
  • 彩蛋
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档