分布式技术原理与算法解析
聂鹏程
智载云帆 CTO,前华为分布式 Lab 资深技术专家
39663 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
分布式技术原理与算法解析
15
15
1.0x
00:00/00:00
登录|注册

15 | 分布式计算模式之MR:一门同流合污的艺术

Final Result
Reducing
Mapping
Splitting
Input
Reducer worker
Mapper worker
Master
合并解
求解子问题
分解原问题
子问题解合并得到原问题解
子问题相互独立
问题规模大或复杂
电商统计用户消费记录的例子
工作流程
MapReduce组件
Reduce
Map
分治法核心步骤
适合问题特征
分治法的应用
与MapReduce的区别
Java版的MapReduce框架
实践应用
工作原理
抽象模型
分治法
MapReduce的应用
分而治之的思想
Fork-Join
MapReduce分布式计算模型
Divide-and-Conquer
总结
知识扩展:Fork-Join计算模式
分治法的原理
分而治之
流水线
Actor
Stream
MapReduce
Framework通常是计算框架,如Hadoop、Spark等
Hadoop用于解决海量数据计算问题
4种计算模式
Mesos的第二层调度由Framework完成
思考题
MR模式
第三站:分布式计算技术
分布式核心技术
MR计算模式,应该如何理解呢?

该思维导图由 AI 生成,仅供参考

你好,我是聂鹏程。今天,我来继续带你打卡分布式核心技术。
我在第 12 篇文章中与你介绍两层调度时提到,Mesos 的第二层调度是由 Framework 完成的。这里的 Framework 通常就是计算框架,比如 Hadoop、Spark 等。用户基于这些计算框架,可以完成不同类型和规模的计算。
那么,在接下来的 4 篇文章,我们就要进入“第三站:分布式计算技术”了。在这一站,我将与你详细介绍分布式领域中的 4 种计算模式,包括 MapReduce、Stream、Actor 和流水线。而今天这篇文章,我们就先从 MR 模式开始吧。
Hadoop 这个框架主要用于解决海量数据的计算问题。那么,它是如何做到海量数据计算的呢?你可能会想,既然是海量数据,规模这么大,那就分成多个进程,每个进程计算一部分,然后汇总一下结果,就可以提升运算速度了。其实,整个计算流程,我们可以很形象地用一个词来解释,就是“同流合污“。
没错,就是这种想法,在分布式领域中就叫作 MR 模式,即 Map Reduce 模式。接下来,我们就一起揭开 MR 模式的神秘面纱吧。

什么是分而治之?

分而治之(Divide-and-Conquer),是计算机处理问题的一个很重要的思想,简称为分治法。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了分布式计算领域中的MapReduce(MR)计算模式。MapReduce是一种分而治之的计算模式,通过Map操作将大任务分成多个较小的任务去执行,得到的多个结果再通过Reduce操作整合成一个完整的结果。文章详细解释了MapReduce的抽象模型和工作原理,包括Map和Reduce两个核心阶段的功能和特点,以及MapReduce的组件结构和工作流程。此外,还介绍了MapReduce的实践应用,以电商统计用户消费记录为例,展示了MapReduce的功能和应用场景。另外,文章还介绍了Fork-Join计算模式,与MapReduce类似,也是一种分而治之的计算模式,但适用于单个Java虚拟机上运行。总的来说,本文通过实例和知识扩展,帮助读者快速了解MapReduce计算模式的原理和应用,以及在分布式系统中的重要性和作用。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式技术原理与算法解析》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • xingoo
    这个批量定义有点模糊。宏观上完整的mapreduce不属于批量,因为最后有个reduce合并操作;但是还要考虑最后reduce要做什么。微观上每个map任务或者shuffle都是并行处理的,此时就可以看做批量任务。

    作者回复: 其实这里的批量处理,是指在map阶段,多个子任务之间是没有依赖关系,可以并发处理不同的数据。

    2019-10-25
    9
  • 小飞侠
    主要讲了下分而治之的思想,思想比较容易理解,但这只是入了个门,MR作为一个计算框架,里边应该涉及任务的调度,数据的分发,key value 如何选取,多年前做过相关开发,但使用后并没有给我很惊艳的感觉,就是对着API编程,定义好KEY,然后启动任务,研究不够深入,工作上涉及的太少了。

    作者回复: 是的,你的理解没错! 我们在物理中学到过能力守恒定律:能量既不会凭空产生,也不会凭空消失,它只会从一种形式转化为另一种形式,或者从一个物体转移到其它物体,而能量的总量保持不变。 其实在计算机科学中也存在类似的定律,我暂且把它叫复杂性守恒的定律或者你也可以把它叫做聂鹏程定律:)“一个问题的复杂性既不会凭空产生,也不会凭空消失,它只会从一种形式转化为另一种形式,或者从一个组件转移到其它组件,而复杂性的总量保持不变。” 当我们在用Hadoop这样的系统,在享受到它们带给我们的简单、便捷的同时,其实是因为Hadoop本身把相应的复杂度给封装起来了。 分而治之的思想虽然简单,但是如果集群规模是10台、100台、1000台、10000台......这样的递增就不简单了。

    2019-12-19
    2
    8
  • 小飞侠
    手机订单统计,任务分解时有问题哦,地市不能只统计top3

    作者回复: 这里只是举例方便读者理解,真实情况考虑的维度肯定会更多一些

    2019-12-19
    2
    4
  • 王涛
    联想:分治和归并结合,就是归并排序。归并排序需要递归实现。 “理论模型都是相通的。”

    作者回复: 👍👍👍

    2020-03-29
    1
  • Geek_c5f483
    看完之后想起来,这应该就是前两年工作中遇到的。。。5分钟数据表、小时数据表、天数据表、月数据表以及年数据表,由于数据量太大,都是通过分而治之的思想拆分写入数据库,业务端用的时候再从对应的表中抽取数据二次处理业务逻辑

    作者回复: 👍👍,温故而知新

    2020-03-31
  • 王涛
    分治法,解决较大问题的一个通用范式!!!

    作者回复: 是的,分而治之的思想和算法应用非常广泛

    2020-03-29
  • 随心而至
    可以类比算法中归并排序理解分而治之的思想。
    2019-10-26
    1
    4
  • Jackey
    有两个问题想请教老师和各位同学 1. 中间结果一定要落盘吗?如果只在内存中进行排序,再发给reduce是不是在速度上可以得到一个提升? 2. 如果在执行时某个任务特别慢,Hadoop的整个流程都会卡住吧?这里有一些改进方法吗?比如超时舍弃任务? 关于思考题:我认为MR是属于批处理类型的。文中讲到一个大任务拆分成多个子任务,类似的,只要是同质的多个任务,都可以放到MR中处理。如果子任务本身粒度比较细,感觉可以考虑省略“拆分”这一步骤了。
    2019-10-25
    6
    1
  • 飞机翅膀上
    发现作者特别喜欢下定义,总是故弄玄虚,其实回归本质有的东西很简单,大白话就可以描述清楚,非要搞一些显得很高级的词语,然后再费劲去解释这个词,不太像一个常年闯荡江湖的武林高手,更像是一个游手好闲的纨绔子弟突然捡到一本武林秘籍,修炼了几天小有所成,然后就自信满满的混迹江湖。
    2022-04-10
  • persecute
    和面试官聊这些,会不会感觉我是老师,他是学生?
    2021-08-06
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部