MapReduce执行过程简要总结

宏观上MapReduce可以分为以下三个阶段,如下图1所示。
阶段1:input/map/partition/sort/spill
阶段2:mapper端merge
阶段3:reducer端merge/reduce/output

图1 MapReduce执行过程

以下分别对上述三个阶段详解。首先是Mapper端的执行逻辑,主要包含以下三点,如图2所示:
1. 将key/value/Partition写入到内存缓冲区中
2. 当缓冲区使用量达到一定阀值,将其spill到disk上,spill前,需要进行排序
3. 排序时先按照Partition进行排序,再按照key进行排序,默认排序算法是快速排序。
注意: 在内存中进行排序时,数据本身不用移动,仅对索引排序即可

图2 Mapper端逻辑

接下来是Map端的归并实现,主要包含以下两点,如图3所示。
1.对生成的多个spill文件,进行归并排序
2.最终归并成一个大文件
注意:
1. 由于每一个spill文件都是按分区和key排序好的,所以归并完的文件也是按分区和key排序好的。
2.在进行归并的时候,不是一次性的把所有的spill文件归并成一个大文件。而是部分spill文件归并成中间文件,然后中间文件和剩下的spill文件再进行归并。


图3 Map端Merge

最后是Reducer端的Merge和Reduce,主要包含以下三点,如图4所示:
1. 当有新的MapTask事件完成时,拷贝线程从指定的机器上面拷贝数据
2. 当数据拷贝的时候,分两种情况,当数据量小的时候就会写入内存当中,当数据量大的时候就会写入硬盘当中
3. 来自不同的机器的多个数据文件,需要归并成一个文件.在拷贝文件过程中会进行文件归并操作.

图4 Reducer端Merge和Reduce

转载请注明出处。

时间: 2024-08-02 13:04:17

MapReduce执行过程简要总结的相关文章

Hadoop MapReduce执行过程详解(带hadoop例子)

https://my.oschina.net/itblog/blog/275294 摘要: 本文通过一个例子,详细介绍Hadoop 的 MapReduce过程. 分析MapReduce执行过程 MapReduce运行的时候,会通过Mapper运行的任务读取HDFS中的数据文件,然后调用自己的方法,处理数据,最后输出.Reducer任务会接收Mapper任务输出的数据,作为自己的输入数据,调用自己的方法,最后输出到HDFS的文件中.整个流程如图: Mapper任务的执行过程详解 每个Mapper任

Hadoop学习之MapReduce执行过程详解

转自:http://my.oschina.net/itblog/blog/275294 分析MapReduce执行过程 MapReduce运行的时候,会通过Mapper运行的任务读取HDFS中的数据文件,然后调用自己的方法,处理数据,最后输出.Reducer任务会接收Mapper任务输出的数据,作为自己的输入数据,调用自己的方法,最后输出到HDFS的文件中.整个流程如图: Mapper任务的执行过程详解 每个Mapper任务是一个java进程,它会读取HDFS中的文件,解析成很多的键值对,经过我

MapReduce执行过程

一.基本执行过程 MapReduce过程分为两个阶段:map函数阶段和reduce函数阶段 (1)map函数是用来筛选掉非需要的数据,以键值对的形式输出,键为文件位置偏移量,值为待分析的数据,map函数核心目的是形成对数据的索引,以供reduce函数方便对数据进行分析. (2)reduce函数以Map函数的输出数据为数据源,对数据进行相应的分析,输出结果为最终的目标数据. 二.实际应用中的分布式执行过程 (1)一个map.一个reduce (2)多个map节点.一个reduce (3)多个map

分析MapReduce执行过程

MapReduce运行的时候,会通过Mapper运行的任务读取HDFS中的数据文件,然后调用自己的方法,处理数据,最后输出. Reducer任务会接收Mapper任务输出的数据,作为自己的输入数据,调用自己的方法,最后输出到HDFS的文件中. Mapper任务的执行过程 每个Mapper任务是一个java进程,它会读取HDFS中的文件,解析成很多的键值对,经过我们覆盖的map方法处理后,转换为很多的键值对再输出.整个Mapper任务的处理过程又可以分为以下几个阶段. 把Mapper任务的运行过程

MapReduce概述,原理,执行过程

MapReduce概述 MapReduce是一种分布式计算模型,运行时不会在一台机器上运行.hadoop是分布式的,它是运行在很多的TaskTracker之上的. 在我们的TaskTracker上面跑的是Map或者是Reduce Task任务. 通常我们在部署hadoop taskTracker 的时候,我们的TaskTracker同时还是我们的Datanode节点.datanode和tasktracker总是部署在一起的. MapReduce执行流程: 为什么要有多个datanode: 因为我

MapReduce的原理及执行过程

MapReduce简介 MapReduce是一种分布式计算模型,是Google提出的,主要用于搜索领域,解决海量数据的计算问题. MR有两个阶段组成:Map和Reduce,用户只需实现map()和reduce()两个函数,即可实现分布式计算. MapReduce执行流程  MapReduce原理  MapReduce的执行步骤: 1.Map任务处理 1.1 读取HDFS中的文件.每一行解析成一个<k,v>.每一个键值对调用一次map函数.                <0,hello

Mapreduce执行过程分析(基于Hadoop2.4)——(三)

4.4 Reduce类 4.4.1 Reduce介绍 整完了Map,接下来就是Reduce了.YarnChild.main()—>ReduceTask.run().ReduceTask.run方法开始和MapTask类似,包括initialize()初始化,根据情况看是否调用runJobCleanupTask(),runTaskCleanupTask()等.之后进入正式的工作,主要有这么三个步骤:Copy.Sort.Reduce. 4.4.2 Copy Copy就是从执行各个Map任务的节点获取

Mapreduce执行过程分析(基于Hadoop2.4)——(一)

1 概述 该瞅瞅MapReduce的内部运行原理了,以前只知道个皮毛,再不搞搞,不然怎么死的都不晓得.下文会以2.4版本中的WordCount这个经典例子作为分析的切入点,一步步来看里面到底是个什么情况. 2 为什么要使用MapReduce Map/Reduce,是一种模式,适合解决并行计算的问题,比如TopN.贝叶斯分类等.注意,是并行计算,而非迭代计算,像涉及到层次聚类的问题就不太适合了. 从名字可以看出,这种模式有两个步骤,Map和Reduce.Map即数据的映射,用于把一组键值对映射成另

Mapreduce执行过程分析(基于Hadoop2.4)——(二)

4.3 Map类 创建Map类和map函数,map函数是org.apache.hadoop.mapreduce.Mapper类中的定义的,当处理每一个键值对的时候,都要调用一次map方法,用户需要覆写此方法.此外还有setup方法和cleanup方法.map方法是当map任务开始运行的时候调用一次,cleanup方法是整个map任务结束的时候运行一次. 4.3.1 Map介绍 Mapper类是一个泛型类,带有4个参数(输入的键,输入的值,输出的键,输出的值).在这里输入的键为Object(默认是