MapReduce 过程分析

原文地址:http://blog.jobbole.com/81676/

2、WordCount处理过程

上面给出了WordCount的设计思路和源码,但是没有深入细节,下面对WordCount进行更加详细的分析:

(1)将文件拆分成splits,由于测试用的文件较小,所以每一个文件为一个split,并将文件按行分割成<key, value>对,如图,这一步由Mapreduce框架自动完成,其中偏移量包括了回车所占的字符

(2)将分割好的<key, value>对交给用户定义的map方法进行处理,生成新的<key, value>对

(3)得到map方法输出的<key, value>对后,Mapper会将它们按照key值进行排序,并执行Combine过程,将key值相同的value值累加,得到Mapper的最终输出结果,如图:

(4)Reduce先对从Mapper接收的数据进行排序,再交由用户自定义的reduce方法进行处理,得到新的<key, value>对,并作为WordCount的输出结果,如图:

时间: 2024-10-06 18:00:16

MapReduce 过程分析的相关文章

cloudera learning8:MapReduce and Spark

YARN:Yet Another Resource Negotiator, Hadoop集群的资源管理器,可以对运行在Hadoop上的MapReduce V2,Spark,Impala等进行内存和CPU的分配. MapReduce过程分析 input split(输入分片)阶段:在进行Map之前,会根据输入文件的大小进行输入分片,每个输入分片对应一个Map任务.输入分片本身并不记录输入数据的内容,而是记录一个分片的长度和一个记录数据所在位置的数组.输入分片往往和HDFS的block关系密切,比如

4. MapReduce

1. 来源和特点 源自于Google的MapReduce论文 :   发表于2004年12月 Hadoop MapReduce是Google MapReduce克隆版 特点: 易于编程 良好的扩展性 高容错性 适合PB级以上海量数据的离线处理 不擅长的方面:  实时计算 像MySQL一样,在毫秒级或者秒级内返回结果 流式计算 MapReduce的输入数据集是静态的,不能动态变化 MapReduce自身的设计特点决定了数据源必须是静态的(为了容错性) DAG计算 多个应用程序存在依赖关系,后一个应

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(默认是

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 学习6 ---- hadoop2提交到Yarn: Mapreduce执行过程分析

hadoop2提交到Yarn: JOB提交过程 http://www.aboutyun.com/forum.php?mod=viewthread&tid=9366&highlight=hadoop2%CC%E1%BD%BB%B5%BDYarn hadoop2提交到Yarn: Map执行过程 http://www.aboutyun.com/forum.php?mod=viewthread&tid=9370&highlight=hadoop2%CC%E1%BD%BB%B5%BD

MapReduce shuffle的过程分析

shuffle阶段其实就是多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点上. Map端: 1.在map端首先接触的是InputSplit,在InputSplit中含有DataNode中的数据,每一个InputSplit都会分配一个Mapper任务,Mapper任务结束后产生<K2,V2>的输出,这些输出先存放在缓存中,每个map有一个环形内存缓冲区,用于存储任务的输出.默认大小100MB(io.sort.mb属性),一旦达到阀值0.8(io.sort.spil

JobTracker作业启动过程分析

在Hadoop中,启动作业运行的方式有很多,可以用命令行格式把打包好后的作业提交还可以,用Hadoop的插件进行应用开发,在这么多的方式中,都会必经过一个流程,作业会以JobInProgress的形式提交到JobTracker中.什么叫JobTracker呢,也许有些人了解Hadoop只知道他的MapReduce计算模型,那个过程只是其中的Task执行的一个具体过程,比较微观上的流程,而JobTrack是一个比较宏观上的东西.涉及到作业的提交的过程.Hadoop遵循的是Master/Slave的