一个mapreduce作业,一般分为两阶段执行:map阶段和reduce阶段,下面分别对这两阶段进行介绍。

Map阶段

Map阶段又分为五部分:读取文件阶段,MapTask阶段,collect阶段,溢写阶段,combine阶段。
首先客户端把待处理文件分片信息、jar包信息、参数信息等提交到HDFS。然后Yarn集群接受任务,启动AppMaster把任务分配NodeManager,并由NodeManager执行MapTask任务。从上图的第6步开始,进入读取文件阶段。

  1. 读取文件阶段
    MapTask通过用户编写的RecordReader,从输入的分片中解析出一个个的k-v对;
  2. MapTask阶段
    每个k-v对调用一次map()函数,输出新的k-v对;
  3. Collect阶段
    MapTask阶段输出的k-v对会先进入环形缓冲区,默认内存大小为100M。在环形缓冲区中,数据进行分区、排序等;
  4. 溢写阶段
    当环形缓冲区写满80%,数据从内存溢写到hdfs,持续多轮以后会产生多个溢写文件。溢写之前,数据会先按分区,再按key排序;
  5. Combine阶段
    当MapTask结束时,多个溢写文件会被合并成一个大的文件。Combine可以把文件中的k-v对数据排列的更紧密一些,减少网络传输I/O。

Reduce阶段

Reduce阶段分为四部分:Copy阶段、Merge阶段、sort阶段、Reduce阶段

  1. Copy阶段
    ReduceTask从各个MapTask上远程拷贝一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中;
  2. Merge阶段
    远程拷贝文件的同时,ReduceTask启动两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上文件过多;
  3. sort阶段
    为了将key相同的数据聚在一起,Hadoop采用了基于排序的策略。由于各个MapTask已经实现了对自己处理结果的局部排序,此步中只需对所有数据进行一次归并排序;
  4. Reduce阶段
    以上步骤处理后的数据调用reduce()函数,每个k-v调用一次。最后把输出文件写到HDFS中。

以上就是对MapReduce工作机制的简单说明,如有错误的地方,还望指正。

【MapReduce】MapReduce工作机制相关推荐

  1. 第6章-MapReduce的工作机制-笔记

    为什么80%的码农都做不了架构师?>>>    作业的提交 可以只用一行代码来运行一个MapReduce作业: JobClient.runJob(conf). 作业的调度 Hadoo ...

  2. MapTask运行机制详解以及Map任务的并行度,ReduceTask 工作机制以及reduceTask的并行度,MapReduce总体工作机制

    MapTask运行机制详解 整个Map阶段流程大体如图所示 简单概述 inputFile通过split被逻辑切分为多个split文件, 通过Record按行读取内容给map(用户自己实现的)进行处理, ...

  3. java程序员的大数据之路(8):MapReduce的工作机制

    概述 Hadoop运行作业时的整个过程如果所示. 包含如下4个独立的实体. 客户端:提交MapReduce作业. jobtracker:协调作业的运行.它的主类是JobTracker. tasktra ...

  4. MapReduce1和Yarn的工作机制

    Hadoop中的MapReduce的工作机制分为两种: MapReduce 1 也就是Hadoop 2.0之前的工作机制 YARN MapReduce 1 构成 MapReduce 1最主要的其实就是 ...

  5. Yarn在MapReduce中的工作机制

    目录 前言: 1.YARN概述 2.mapreduce&yarn的工作机制 总结: 目录 前言: 在了解Yarn在MR中的作用的时候需要先了解Yarn是什么. 1.YARN概述 Yarn是一个 ...

  6. Hadoop 4、Hadoop MapReduce的工作原理

    一.MapReduce的概念 MapReduce是hadoop的核心组件之一,hadoop要分布式包括两部分,一是分布式文件系统hdfs,一部是分布式计算框就是mapreduce,两者缺一不可,也就是 ...

  7. 经典MapReduce作业和Yarn上MapReduce作业运行机制

    一.经典MapReduce的作业运行机制 如下图是经典MapReduce作业的工作原理: 1.1 经典MapReduce作业的实体 经典MapReduce作业运行过程包含的实体: 客户端,提交MapR ...

  8. 什么是MapReduce?MapReduce的运行机制是什么?MapReduce的实现过程

    1. MAPREDUCE原理篇(1) Mapreduce是一个分布式运算程序的编程框架,是用户开发"基于hadoop的数据分析应用"的核心框架: Mapreduce核心功能是将用户 ...

  9. MapReduce的运行机制及共同好友

    1 .MapReduce的运行机制详解 1.1:MapTask 工作机制 整个Map阶段流程大体如上图所示. 简单概述:inputFile通过split被逻辑切分为多个split文件,通过Record ...

最新文章

  1. docker mac python_Docker Python 例子
  2. BZOJ1257 [CQOI2007]余数之和
  3. service层的方法上使用@Transactional注解,程序发生异常没有回滚
  4. 【数据库】oracle数据库----内嵌视图
  5. linux ssh密钥对,Mac使用ssh密钥登录Linux
  6. Hive Shell
  7. IDBI的完整格式是什么?
  8. linux进入字符界面编程,MPlayer字符界面操作方法
  9. 跳槽和求职 ,10条掏心建议
  10. sunplus 8202v iop源代码阅读笔记——1
  11. oracle disk missing,oracle asm disk被格式化为ntfs文件系统
  12. Swift - 高级运算符介绍
  13. 【python入门到实践1】简介和环境搭建
  14. 中英文论文写作指导第三部分(实验、材料和方法部分)
  15. PM之数据分析与逻辑能力
  16. IOS TalkingData实现数据监控
  17. 项目管理知识体系指南 (八)
  18. Android 百度离线地图下载完后调用下载好的离线包
  19. win10锁屏c语言,怎样在Win10锁屏界面打开任意应用程序【图文教程】
  20. PHP7封装了str_ends_with, phper看了都说好

热门文章

  1. idea2020新建一个jsp页面_有关idea2019版的jsp配置小教程
  2. python 需要输入多个变量_使用多个变量的Python输入验证…是否简化?
  3. VS2012下基于Glut glRotatef glTranslatef示例程序:
  4. android书籍和教程推荐--不断更新
  5. iphone保修期多久_小心!教你如何鉴别 iPhone 翻新机,黑机千万别买!
  6. 实现前后端分离的心得
  7. 如何用vue实现模态框组件
  8. 编程练习赛11B 物品价值(装压dp)
  9. Java的一些基础小知识之JVM与GC (转)
  10. 某个目录下产品根据创建时间下架