原文地址:如何简单解释 MapReduce 算法

在Hackbright做导师期间,我被要求向技术背景有限的学生解释MapReduce算法,于是我想出了一个有趣的例子,用以阐释它是如何工作的。

例子

你想数出一摞扑克牌中有多少黑桃。直观方式是一张一张检查并且数出有多少张是黑桃。

MapReduce方法规则是:

  1. 给在座的所有玩家中分配这摞牌
  2. 让每个玩家数自己手中有几张是黑桃,然后把这个数目汇报给你
  3. 你把所有玩家告诉你的数字加起来,得到最后的结论.

背景

谷歌在2004年发表了可以分析大量数据的MapReduce算法. 每当你听到"大数据"这个词时,它指的是因为太大而让仅仅一台机器难以有效存储或分析的问题。MapReduce通过把计算量分配给不同的计算机群,能够解决大部分和大数据有关的分析问题。Hadoop提供了最受欢迎的利用MapReduce算法来管理大数据的开源方式。先进MapReduce是主流。

所以通常来说,每当你听到“大数据”,那也许意味着Hadoop被用来存储数据,也通常意味着数据的抽取和检索是用的MapReduce。

拆分

MapReduce合并了两种经典函数:

  • 映射(Mapping) 对集合里的每个目标应用同一个操作。即,如果你想把表单里每个单元个乘以二,那么把这个函数单独地应用在每个单元格上的操作就属于mapping。
  • 化简(Reducing) 遍历集合中的元素来返回一个综合的结果。即,输出表单里一列数字的和这个任务属于reducing。

重新审视上面的列子

重新审视我们原来那个分散纸牌的例子,我们有MapReduce数据分析的基本算法。友情提示:这不是个严谨的例子。在这个例子里,人代表计算机,因为他们同时工作,所以他们是个集群。在大多数实际应用中,我们假设数据已经在每台计算机上了 —— 也就是说把牌分出去并不是MapReduce的一步。(事实上,在计算机集群中如何存储文件是Hadoop的真正核心。)

通过把牌分给多个玩家并且让他们各自数数,你就在并行执行运算,因为每个玩家都在同时计数。这同时把这项工作变成了分布式的,因为多个不同的人在解决同一个问题的过程中并不需要知道他们的邻居在干什么。

通过告诉每个人去数数,你对一项检查每张牌的任务进行了映射。你不会让他们把黑桃牌递给你,而是让他们把你想要的东西化简为一个数字。

另外一个有意思的情况是牌分配得有多均匀。MapReduce假设数据是洗过的(shuffled) — 如果所有黑桃都分到了一个人手上,那他数牌的过程可能比其他人要慢的很多。

如果有足够的人的话,问一些更有趣的问题就相当简单了 —— 比如“一摞牌的平均值(二十一点算法)是什么”。你可以通过合并“所有牌的值的和是什么”以及“我们有多少张牌”这两个问题来得到答案。用这个和初一牌的账单就得到了平均值。

结论

MapReduce算法的机制要远比这复杂得多,但是主体思想是一致的 —— 通过分散计算来分析大量数据。无论是Facebook、NASA,还是小创业公司,MapReduce都是目前分析互联网级别数据的主流方法。有趣的是,MapReduce在多于10PB数据时趋向于变慢,所以谷歌在他们今年的IO大会上报告称MapReduce已经不够他们用了。

转载于:https://www.cnblogs.com/boothsun/p/7714609.html

如何简单解释 MapReduce算法相关推荐

  1. 简单解释 MapReduce 算法

    一个有趣的例子 你想数出一摞牌中有多少张黑桃.直观方式是一张一张检查并且数出有多少张是黑桃? MapReduce方法则是: 给在座的所有玩家中分配这摞牌 让每个玩家数自己手中的牌有几张是黑桃,然后把这 ...

  2. mapreduce 算法_MapReduce算法–了解数据联接第二部分

    mapreduce 算法 自从我上一次发布以来已经有一段时间了,就像我上一次大休息一样,我正在Coursera上一些课程. 这次是Scala中的函数式编程 原理和React式编程原理 . 我发现它们都 ...

  3. MapReduce算法–了解数据连接第二部分

    自从我上一次发布以来已经有一段时间了,就像我上一次大休息一样,我正在Coursera上一些课程. 这次是Scala中的函数式编程 原理和反应式编程原理 . 我发现它们都是不错的课程,如果有时间的话,建 ...

  4. MapReduce算法设计(三)----相对频率计算

    1.    相对频率的计算 在我们使用应用程序来分析文章时,一个重要的使用就是文章主题分类.就是依据文章所要表达的主题进行分类.而一般的程序化分类 (非人工分类)所使用的方法是TF-IDF.这种方法依 ...

  5. TP5 实现基于标签简单的推荐算法

    1.算法思想 1.1.理解算法过程 我们在写算法的时候要先理解我们的对象和之间的关系,我这里举例供求信息和用户设置标签,两者关系是,系统会根据用户设置的标签来匹配与其相似度较高的,同时用户发布的供求信 ...

  6. 转:我是如何向老婆解释MapReduce的?

    我是如何向老婆解释MapReduce的? 2013/04/19 · 开发 · 2 评论 · Big Data, MapReduce 分享到: 本文由 伯乐在线 - 伯乐在线读者 翻译.未经许可,禁止转 ...

  7. mapreduce 算法_MapReduce算法–顺序反转

    mapreduce 算法 这篇文章是介绍MapReduce算法的系列文章的另一部分,该书在使用MapReduce进行数据密集型文本处理中找到. 先前的文章是Local Aggregation , Lo ...

  8. MapReduce算法–顺序反转

    这篇文章是介绍MapReduce算法的系列文章的另一部分,该书在使用MapReduce进行数据密集型文本处理中找到. 先前的文章是Local Aggregation , Local Aggregati ...

  9. MapReduce算法–二级排序

    我们将继续进行有关实现MapReduce算法的系列文章,该系列可在使用MapReduce进行数据密集型文本处理中找到. 本系列的其他文章: 使用MapReduce进行数据密集型文本处理 使用MapRe ...

最新文章

  1. Android Volley入门到精通:初识Volley的基本用法
  2. 研究人员表示Wi-Fi WPA3有重多的安全漏洞
  3. 学习笔记之Java程序设计实用教程
  4. python webviewer爬虫_爬虫再也不怕检测浏览器环境了
  5. FarPoint Spread For .Net 4.0
  6. Java面试——Redis系列总结
  7. linux 复制硬盘 启动报错,linux挂载硬盘报错(you must specify the filesystem type)
  8. Win8.1/Win10在某些程序输入中文变成问号的解决方法
  9. js双等号探索(三): [] == false为True,而!![] == false为False ?
  10. 使用FFmpeg工具进行推流、拉流、截图、变速、转换,及常见问题处理
  11. CentOS7.0设置中文输入法
  12. 假设检验-统计学自学笔记
  13. Windows上免费轻量好用的软件(不定期更新)
  14. 此windows副本不是正版_阳光单职业传奇正版-阳光单职业传奇正版官网版v2.0
  15. 利用selenium实时监测交大经管学院前沿讲座更新状态_20200527_
  16. Prometheus自定义线程池指标暴露
  17. 设计模式-文本编辑器
  18. 赛马c语言编程,C/C++编程题之渊子赛马
  19. 电商基本功:被小瞧的促销设计,并没有想得那么简单
  20. 基于FPGA 的PLC/PAC 硬件运行时的实现

热门文章

  1. spring cloud搭建_Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!
  2. 聚类时需要标准化吗_收房时,需要请专业验房师吗?
  3. linux 内核参数优化 mysql_Linux记录-mysql参数优化
  4. catia装配体怎么把零件旋转180度_各种装配夹具,来看看适合你用的
  5. postgre 主键_PostgreSQL – 随机主键
  6. java mb单位转换_Java计算机硬盘大小转换(B,KB,MB,GB,TB,PB之间的大小转换)
  7. Android Location API跟踪您当前的位置
  8. 将微信小视频发送给QQ好友
  9. Java的历史和学习Java需要准备的工具
  10. 人工智能时代职教教师能力提升的路径