本节书摘来异步社区《Hadoop MapReduce性能优化》一书中的第1章,第1.3节,作者: 【法】Khaled Tannir 译者: 范欢动 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.3 Hadoop MapReduce的工作原理

Hadoop MapReduce性能优化
经过一个或者多个步骤,MapReduce编程模型可以用来处理许多大规模数据问题,还可以更高效地实现MapReduce编程模型来支持使用大量机器处理大量数据的问题。在大数据的背景下,可以处理的数据规模可以大到无法在单机存储。

在典型的Hadoop MapReduce框架下,数据拆分为数据块并分发到集群内的多个节点上。MapReduce框架通过把计算逻辑转移到数据所在的机器,而不是把数据转移到其能够得以处理的机器上,从而充分利用数据的本地性优势。MapReduce应用的大多数输入数据块存放在本地节点,因而能够迅速加载,而且可以并行读取在多个节点上的多个数据块。因此,MapReduce能够达到很高的综合I/O带宽和数据处理速率。

要启动一项MapReduce作业,Hadoop会创建一个MapReduce应用的实例并把作业提交给JobTracker。然后,作业被拆分为map任务(也叫作mapper)和reduce任务(也叫作reducer)。

Hadoop启动MapReduce作业时,输入数据集拆分为大小相等的数据块,并采用心跳协议(heartbeat protocol)分配任务。每个数据块被调度到一个TaskTracker节点上并由一个map任务处理。

每项任务都在一个工作节点的可用插槽上执行,每个节点会配置固定数量的map插槽和固定数量的reduce插槽。如果所有可用插槽都被占用,挂起的任务就需要等待一些插槽被释放。

TaskTracker周期性地向JobTracker发送其状态。当TaskTracker节点空闲时,JobTracker节点会给它分配新任务。JobTracker节点在散发数据块时会考虑数据本地性,总是试图把本地数据块分配给TaskTracker节点。如果尝试失败,JobTracker节点会分配一个本地机架或者随机数据块给TaskTracker节点。

当所有的map函数都执行结束时,运行时系统会将中间键值对分组,并发起一组reduce任务来生成最终结果。接下来执行过程从shuffle阶段转向reduce阶段。在这个最终的reduce阶段,reduce函数被调用来处理中间数据并写最终输出。

用户经常使用不同的术语来表述Hadoop的map和reduce任务、子任务、阶段、子阶段。map任务包含了两个子任务(map和merge),而reduce任务仅包含一个任务。然而,shuffle和sort首先发生,并由系统完成。每个子任务又拆分为多个子阶段,如read-map、spill、merge、copy-map和reduce-write。

《Hadoop MapReduce性能优化》一1.3 Hadoop MapReduce的工作原理相关推荐

  1. Hadoop Join性能优化

    为什么要优化? 数据格式 address.txt 1    America 2    China 3    Germen number.txt 1    Spark    1 2    Hadoop  ...

  2. MapReduce的优化

    MapReduce的优化 MapReduce 运行慢的原因 1.计算机性能 2.I/O操作优化 MapReduce的优化方法 1.数据输入 2.Map阶段 3.Reduce阶段 4.IO传输 5.数据 ...

  3. 大数据存储系统I/O性能优化技术研究进展

    大数据存储系统I/O性能优化技术研究进展 肖利民,霍志胜 北京航空航天大学计算机学院,北京 100191 摘要:大数据存储系统的I/O性能是影响大数据应用整体性能的关键因素之一,总结了当前在存储系统架 ...

  4. 何崚谈阿里巴巴前端性能优化最佳实践

    转载:http://www.infoq.com/cn/interviews/hl-alibaba-front-end-performance-optimization 大家好,我现在在阿里巴巴园区采访 ...

  5. MySQL 的性能(下篇)—— 性能优化方法

    简介 文中内容均为阅读前辈的文章所整理而来,参考文章已在最后全指明 本文分为上下两篇: 上篇:MySQL 的 SQL 执行分析 下篇:MySQL 性能优化 下面为下篇内容,分为以下部分: 一.创建表时 ...

  6. Android APP性能优化

    转载自:https://www.cnblogs.com/qwangxiao/p/8727229.html Android APP性能优化(最新总结) 导语 安卓大军浩浩荡荡,发展已近十个年头,技术优化 ...

  7. 腾讯云前端性能优化大赛火热招募中!

    腾讯云首届前端性能优化大赛即将启动,2021年11月29日至2021年12月12日,赛事正式向广大前端开发者与技术达人启动线上招募,一场首屏耗时之间的"巅峰对决"即将上演!赶紧参与 ...

  8. vue 一个页面有点请求需要同时发送_前端性能优化,这些你都需要知道

    来源: 海洋里的魔鬼鱼 前言 最近花了一些时间在项目的性能优化上,背后做了很多工作,但是最后依然没有达到自己想要的结果,有些失望,但是还是记录下自己的执着. 性能优化总结:减少请求次数.减小资源大小. ...

  9. Android APP性能优化(一)

    Android APP性能优化(最新总结) 安卓大军浩浩荡荡,发展已近十个年头,技术优化日异月新,如今Android 8.0 Oreo 都发布了,Android系统性能已经非常流畅了.但是,到了各大厂 ...

最新文章

  1. 玩玩.net的ildasm與ilasm (转)
  2. 使用webpack、vue来开发一个todo项目
  3. Django介绍工程搭建
  4. 8、MySQL变量的定义和赋值
  5. SQL Server 开发指南(经典教程)
  6. 从汇编角度看待函数调用
  7. 程序员这样聊天,让女神疯狂追逐你
  8. jpg图片使用pil的resize后_刚毕业,求解“pdf转换为jpg”的操作教程
  9. 最近使用mysql遇到的几个问题
  10. 如何用密码保护 macOS 文件夹?
  11. 企业应用打包的时候 修改ipa包的bundle identifier
  12. 古诗词学习-迢迢牵牛星+长歌行+小雅·采薇+敕勒歌+悯农(其一)+小儿垂钓+蝉+正月十五夜+望月怀远+十五夜望月寄杜郎中
  13. 整理:不用ACE你不知道ACE有多烂,给饱受ACE折磨的弟兄们散分了。
  14. Windows10修改本地用户账户名(彻底修改)
  15. 一维信号的频域特征分析python
  16. 微信公众号接口类(PHP版本)
  17. 如何提高项目估算精准度?关键看5大影响因子
  18. SQLyog安装配置详细过程
  19. 【mySQL】mysql数据库分页查询讨论专题
  20. R语言时间序列数据的合并(merge time series):使用merge函数合并时间序列数据、使用zoo包中的na.spline函数使用三次样条方法(cubic spline)填充时间序列缺失值

热门文章

  1. C++结构名、联合名、枚举名都是类型名
  2. 超图预览osgb格式倾斜摄影文件
  3. 图解netstat命令实例
  4. 批量修改历史commit的用户名user.name邮箱user.email
  5. 理解值和对象-快照图
  6. C#搭建CEF(CEFGLUE) 环境。
  7. js002-在HTML中使用JavaScript
  8. Openlayers 2.X加载高德地图
  9. 传华西村将斥资亿元涉足网游业
  10. Siebel Admin: Siebel task manager commands