MapReduce执行流程
一. MapReduce工作原理
MapReduce执行,会在Mapper任务运行时读取HDFS中的数据文件,然后调用map方法处理数据,输出。
Reducer任务接收Mapper任务输出的数据,作为自己的输入数据调用reduce方法,最后输出到HDFS文件中
(1)Mapper任务详解
每个Mapper任务是一个独立java进程,读取HDFS中的文件,解析成键值对,经过map方法转换成多个键值对输出
第一阶段是把输入文件按照一定的标准分片(InputSplit),每个输入片的大小是固定的。默认情况下,输入片(InputSplit)的大小与数据块(Block)的大小是相同的。如果数据块(Block)的大小是默认值64MB,输入文件有两个,一个是32MB,一个是72MB。那么小的文件是一个输入片,大文件会分为两个数据块,那么是两个输入片。一共产生三个输入片。每一个输入片由一个Mapper进程处理。这里的三个输入片,会有三个Mapper进程处理。
第二阶段是对输入片中的记录按照一定的规则解析成键值对。有个默认规则是把每一行文本内容解析成键值对。“键”是每一行的起始位置(单位是字节),“值”是本行的文本内容。
第三阶段是调用Mapper类中的map方法。第二阶段中解析出来的每一个键值对,调用一次map方法。如果有1000个键值对,就会调用1000次map方法。每一次调用map方法会输出零个或者多个键值对。
第四阶段是按照一定的规则对第三阶段输出的键值对进行分区。比较是基于键进行的。比如我们的键表示省份(如北京、上海、山东等),那么就可以按照不同省份进行分区,同一个省份的键值对划分到一个区中。默认是只有一个区。分区的数量就是Reducer任务运行的数量。默认只有一个Reducer任务。 第五阶段是对每个分区中的键值对进行排序。首先,按照键进行排序,对于键相同的键值对,按照值进行排序。比如三个键值对<2,2>、<1,3>、<2,1>,键和值分别是整数。那么排序后的结果是<1,3>、<2,1>、<2,2>。如果有第六阶段,那么进入第六阶段;如果没有,直接输出到本地的linux文件中。
第五阶段是对每个分区中的键值对进行排序。首先,按照键进行排序,对于键相同的键值对,按照值进行排序。比如三个键值对<2,2>、<1,3>、<2,1>,键和值分别是整数。那么排序后的结果是<1,3>、<2,1>、<2,2>。如果有第六阶段,那么进入第六阶段;如果没有,直接输出到本地的linux文件中。
第六阶段是对数据进行归约处理,也就是reduce处理。键相等的键值对会调用一次reduce方法。经过这一阶段,数据量会减少。归约后的数据输出到本地的linxu文件中。本阶段默认是没有的,需要用户自己增加这一阶段的代码。
(2)Reducer任务详解
每个Reducer任务是一个java进程。Reducer任务接收Mapper任务的输出,归约处理后写入到HDFS中
第一阶段是Reducer任务会主动从Mapper任务复制其输出的键值对。Mapper任务可能会有很多,因此Reducer会复制多个Mapper的输出。
第二阶段是把复制到Reducer本地数据,全部进行合并,即把分散的数据合并成一个大的数据。再对合并后的数据排序。
第三阶段是对排序后的键值对调用reduce方法。键相等的键值对调用一次reduce方法,每次调用会产生零个或者多个键值对。最后把这些输出的键值对写入到HDFS文件中。
相关推荐
以下是MapReduce执行流程、Split切片、以及MapTask过程的详细解析。 1. MapReduce执行流程: MapReduce的工作流程主要分为四个步骤:作业提交、任务调度、Map任务执行和Reduce任务执行。首先,客户端将作业提交给...
本节将对 Hadoop MapReduce 的工作机制进行介绍,主要从 MapReduce 的作业执行流程和 Shuffle 过程方面进行阐述。通过加深对 MapReduce 工作机制的了解,可以使程序开发者更合理地使用 MapReduce 解决实际问题。 ...
### MapReduce详细流程 #### 一、MapReduce概述 MapReduce是Hadoop生态系统中的核心组件之一,主要用于处理大规模数据集的分布式计算。它基于一种简单的编程模型,将复杂的任务分解为两个基本步骤:Map(映射)和...
TaskTracker:定期与JobTracker通信,执行Map和Reduce任务 HDFS:保存作业的数据、配置、jar包、结果 作业运行流程 1.在客户端启动一个作业。 2.向JobTracker请求一个Job ID。 3.将运行作业所需要的资源文件复制到...
060 MapReduce执行流程之Shuffle和排序流程以及Map端分析 061 MapReduce执行流程之Reduce端分析 062 MapReduce Shuffle过程讲解和Map Shuffle Phase讲解 063 Reduce Shuffle Phase讲解 064 源代码跟踪查看Map Task和...
本篇将详细阐述Hadoop中的MapReduce执行流程,包括其主要概念、数据结构和整体工作过程。 1. MapReduce执行的关键角色 - JobClient:MapReduce作业的起点,用户通过JobClient类提交作业,包含应用程序和配置信息。...
在MapReduce执行流程中,应用程序开发者主要关注Map和Reduce函数的实现,而其他的如数据拆分、调度、容错等复杂工作则由框架自动处理。这大大降低了开发大规模数据处理应用的难度。 总结起来,MapReduce是一种高效...
实验的总结与思考部分,强调了实验的目标在于理解和掌握MapReduce编程思想,了解MapReduce作业的执行流程,以及如何使用MapReduce Java API进行编程。此外,还包括在Hadoop集群上运行程序,利用Web界面和Shell命令...
MapReduce执行流程: * Client:作业提交发起者。 * JobTracker:初始化作业,分配作业,与TaskTracker通信,协调整个作业。 * TaskTracker:保持JobTracker的Task队列,执行Task,报告Task状态。 Cloudera ...
MapReduce执行流程包括提交任务、调度Map任务、执行Map任务、Reduce任务分配和执行,以及最后将结果写回HDFS。 为了进一步提高效率和容错性,MapReduce支持任务的动态分配和节点间的异构性。即使某些工作节点出现...
4. **MapReduce执行流程**: - **JobClient**:用户提交作业,打包应用程序,然后提交给JobTracker。 - **JobTracker**:负责作业的调度,监控任务状态,如果任务失败则重新调度。 - **TaskTracker**:执行...
* MapReduce 程序的执行流程 * MapReduce 程序的优化方法 MapReduce 项目实践 在实践中,我们可以使用 MapReduce 来解决各种大数据处理问题。以下是一些 MapReduce 项目实践: * WordCount 程序编写及代码分析 * ...
6. **MapReduce执行流程** - JobClient将应用程序提交到JobTracker,JobTracker将任务分解为MapTask和ReduceTask,分配给TaskTracker执行。 - JobTracker负责监控所有任务的状态,重新调度失败的任务。 - ...
6. 举例说明Hive的MapReduce执行流程。 7. 如何在Hive中创建存储桶?它对性能有什么影响? 8. 当处理大数据时,如何解决Hadoop和Hive的延迟问题? 以上内容仅涵盖了Hadoop和Hive的基础知识,实际面试可能还会涉及更...
本资源摘要信息将对阿里云E-MapReduce的常见问题进行总结,涵盖了作业和执行计划的区别、作业日志的查看、集群和执行计划的计时策略、读写ODPS时的错误处理、ConsumerID消费同一个Topic时的TPS不一致问题、查看作业...
- MapReduce执行流程:JobTracker负责调度作业,TaskTracker在各节点上执行任务。Map任务处理输入数据,Reduce任务聚合结果。 3. Hadoop编程模型: - Map函数:输入是键值对(key-value pairs),输出也是临时的...