`
younglibin
  • 浏览: 1207752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hadoop中Reduce任务的执行框架

 
阅读更多

在前面的一系列文章中我主要围绕Hadoop对Map任务执行框架的设计与实现展开了详细的讨论,记得在博文Hadoop中Map任务的执行框架( 见  http://www.linuxidc.com/Linux/2012-01/50853.htm )中说过还要为大家详细地描述Hadoop对Reduce任务执行框架的设计,那么在本文,我将兑现这个承诺。

     其实,Hadoop中Reduce任务执行框架跟它的Map任务执行框架大致是很相似的,唯一的不同之处就是他们的数据输入来源、数据输出目的地不一样而已。总的说来,Map任务的输入数据来源于HDFS,最后的结果输出分布在每一个执行map任务的机器节点本地文件系统上,而Reduce任务的数据来源于每一个执行map任务的机器节点本地文件系统,它的最终结果存放在作业设置的HDFS某个目录下。

     在这里我想简单的讨论一下为什么map任务的输出要保存到各自执行节点的本地文件系统,而不是hadoop所依赖的某一个分布式文件系统(如HDFS)?现在假如说map任务的结果输出被保存到了HDFS上了,这样的话,所有的map输出就在网络上移动了一次,当开始执行某一个reduce任务的时候,它会从HDFS上去取输入数据,尽管Hadoop的任务调度器总是最大努力将reduce任务交给有map输出结果的机器节点(也就是执行过它的map任务的机器节点),但在绝大多数情况下总会存在一些reduce任务需要的输入数据有部分不再本地,从而去HDFS上取,最后导致有些map任务的输出结果在网络上移动了两次;如果将map任务的输出结果就放在它的本地文件系统,那么当某一个reduce开始执行之前,它需要从每一个机器节点的本地文件系统上取属于它的map输出数据,最终所有的map结果数据在网络上只移动了一次。同时,在这里就可以解释为什么要在map任务中进行合并,对map的输出进行合并可以大大较少最后的输出,一方面减轻了reduce的工作负载,另一方面也减少了reduce执行时数据移动的消耗。

      还是来看看Hadoop是如何来设计Reduce任务执行框架的:

 


    

 

      关于Hadoop的Reduce任务执行框架的具体流程大体同Map,在这里我就不再赘述了,有兴趣的盆友可以参看我的另一篇博文:Hadoop中Map任务的执行框架。不过,与Map略微的不同之处就是构造数据记录读取器的数据来源,reduce需要先从其它机器节点的本地文件系统中copy下来,至于reduce是如何copy这些数据的,这其中又用了什么网络协议,我会在以后的文章中作详细的阐述,不过有一点我提一下,reduce从map节点copy下来的数据会根据当前节点的内存情况把它们放到内存或本地磁盘中。

     到这里,我已经分析了Hadoop中整个Map-Reduce模型的设计,现在我先把这两个模型组合起来,好让大家能够跟清楚地了解Hadoop是如何对一个提交的作业进行map-reduce处理的。这个演示过程如下:

分享到:
评论

相关推荐

    hadoop map-reduce turorial

    **任务执行与环境**:Map-Reduce框架提供了丰富的API,允许用户监控任务的执行状态,包括任务进度、错误日志、内存使用情况等,有助于及时发现和解决执行过程中的问题。 **作业提交与监控**:用户可通过Hadoop...

    hadoop map reduce 中文教程

    每个案例都详细列出了实践步骤,包括如何编写 Map 和 Reduce 函数、如何配置 Hadoop 环境、如何运行 MapReduce 任务等。 #### 六、总结 Hadoop MapReduce 是一种非常强大的分布式数据处理工具,它通过简单的编程...

    Hadoop Map Reduce教程

    该框架将任务分解为一系列较小的任务(Map 和 Reduce),并在集群中的多台计算机上并行执行这些任务。 - **应用场景**:适用于大数据分析、搜索引擎索引构建、日志文件分析等场景。 #### 二、MapReduce 工作原理 1...

    hadoop中map/reduce

    JobTracker负责调度和监控所有的Map和Reduce任务,确保任务的正确执行和资源的有效分配。然而,在Hadoop 2.x版本中,JobTracker被YARN(Yet Another Resource Negotiator)取代,YARN成为资源管理和任务调度的中心,...

    Hadoop任务调度器

    Hadoop任务调度器是Hadoop分布式计算框架中的核心组件之一,负责管理和分配集群资源,以实现任务的高效执行。Hadoop的作业调度过程可以划分为几个主要阶段,这些阶段涉及到从作业提交到任务分配的各个环节。下面详细...

    最高气温 map reduce hadoop 实例

    接下来是Reduce阶段,Reduce任务接收Map阶段产生的所有中间结果,并对同一键的所有值进行聚合操作。在这里,Reduce函数将收到所有地点的最高气温记录,通过比较找出全球的最高气温。最后,Reduce的输出就是单一的...

    hadoop教程

    Hadoop 的 JobTracker 是 Map/Reduce 框架中的一个核心组件,负责调度和监控作业的执行,并重新执行已经失败的任务。 TaskTracker 是 Map/Reduce 框架中的一个组件,负责执行 JobTracker 指派的任务,并将执行结果...

    分布式计算开源框架Hadoop入门实践.pdf

    4. **Reduce阶段**:Reduce任务接收来自多个Map任务的相同键的所有值,执行用户定义的Reduce函数,生成最终结果。 5. **数据输出**:Reduce的结果写入到HDFS或其他输出目的地。 ## 5. Hadoop的学习与实践 学习...

    hadoop手册-分布式框架介绍

    4. **Reduce任务执行**:每个Reduce任务从所有Map任务接收相同键的数据,对这些数据进行汇总处理,最后将结果输出。 #### 五、Hadoop生态系统 除了HDFS和MapReduce之外,Hadoop生态系统还包括了其他重要的工具和...

    hadoop_join.jar.zip_hadoop_hadoop query_reduce

    用户可以使用Hadoop的命令行工具`hadoop jar`来运行这个JAR文件,执行特定的Join查询任务。例如,命令可能如下: ```bash hadoop jar hadoop_join.jar input_path output_path ``` 在这个命令中,`input_path`是...

    Linux提交hadoop任务

    开发者在Linux终端中通过命令行交互,执行Hadoop相关的操作,如上传、提交和监控任务。 2. **Hadoop**:Hadoop是Apache软件基金会的一个开源项目,它提供了一个分布式文件系统(HDFS)和一个并行处理框架MapReduce...

    Hadoop数据挖掘并行算法框架.pdf

    例如,K-Means聚类算法和SVM分类算法通过Map/Reduce编程框架进行并行化处理后,能在Hadoop云平台上高效运行,从而提高了大规模数据挖掘任务的加速比。 综上所述,Hadoop数据挖掘并行算法框架在处理大数据集时展现出...

    Hadoop框架下的容灾系统研究

    这种模型非常适合大规模并行处理,因为每个Map或Reduce任务都是独立的,并且可以在多台机器上同时执行。 ##### 1.2 HDFS (Hadoop Distributed File System) HDFS是一种分布式文件系统,专为存储大量数据而设计。它...

    Hadoop大数据期末考试重点

    1. **JobTracker与TaskTracker的角色**:在早期的Hadoop版本中,JobTracker负责任务调度和资源管理,而TaskTracker执行实际的任务。但描述中的错误指出TaskTracker执行JobTracker分配的任务,实际上应该是相反的。 ...

    Hadoop Reduce Join及基于MRV2 API 重写

    标题 "Hadoop Reduce Join及基于MRV2 API 重写" 涉及到的是大数据处理框架Hadoop中的一个重要操作,即数据连接(Join)。在Hadoop MapReduce中,Reduce Join是一种实现大规模数据集间连接的高效方法。本文将探讨...

    第02节:hadoop精讲之map reduce原理及代码.pdf

    3. Shuffle阶段:Hadoop框架将所有Map任务输出的中间键值对进行排序和分组,以便所有具有相同键的值被发送到同一个Reduce任务。 4. Reduce阶段:Reduce任务对具有相同键的中间值进行归约操作,最终输出结果数据。 5....

    Hadoop 2.7.1 中文文档

    3. **YARN(Yet Another Resource Negotiator)**:在Hadoop 2.x版本中引入,作为资源管理器,负责集群中的任务调度和资源分配,将原本在MapReduce中的资源管理和计算任务分离,提高了系统的灵活性和效率。...

Global site tag (gtag.js) - Google Analytics