在本节中我们主要来学习MapReduce编程接口模型中的Reduce组件。
和学习
Mapper组件详解一样,我们先来看看1.0新版本中Reduce代码:
public class Reducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT> {
public class Context
extends ReduceContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT> {
public Context(Configuration conf, TaskAttemptID taskid,
RawKeyValueIterator input,
Counter inputKeyCounter,
Counter inputValueCounter,
RecordWriter<KEYOUT,VALUEOUT> output,
OutputCommitter committer,
StatusReporter reporter,
RawComparator<KEYIN> comparator,
Class<KEYIN> keyClass,
Class<VALUEIN> valueClass
) throws IOException, InterruptedException {
super(conf, taskid, input, inputKeyCounter, inputValueCounter,
output, committer, reporter,
comparator, keyClass, valueClass);
}
}
/**
* Called once at the start of the task.
*/
protected void setup(Context context
) throws IOException, InterruptedException {
// NOTHING
}
/**
* This method is called once for each key. Most applications will define
* their reduce class by overriding this method. The default implementation
* is an identity function.
*/
@SuppressWarnings("unchecked")
protected void reduce(KEYIN key, Iterable<VALUEIN> values, Context context
) throws IOException, InterruptedException {
for(VALUEIN value: values) {
context.write((KEYOUT) key, (VALUEOUT) value);
}
}
/**
* Called once at the end of the task.
*/
protected void cleanup(Context context
) throws IOException, InterruptedException {
// NOTHING
}
/**
* Advanced application writers can use the
* {@link #run(org.apache.hadoop.mapreduce.Reducer.Context)} method to
* control how the reduce task works.
*/
public void run(Context context) throws IOException, InterruptedException {
setup(context);
while (context.nextKey()) {
reduce(context.getCurrentKey(), context.getValues(), context);
}
cleanup(context);
}
}
Reduce中的方法和Mapper中的方法基本一样,使用也擦不多。
对于MapReduce编程模型中的Mapper和Reduce两个组件来说,分别对应Map Task和Reduce Task。在一个MapReduce,用户可以控制Reduce Task作业的个数,也就是说,用户可以让一个作业中的reducer的个数为零,但是却不能手工的决定Map Task的任务数目,而只能同配置参数(详情见
InputFormat组件)来间接控制mapper的个数。
但是在真正的执行Reduce组件中的reduce()方法来处理用户关注的业务逻辑之间,会先执行reducer端的shuffle阶段,其流程图如下所示:

- 大小: 47.4 KB
分享到:
相关推荐
《深入云计算:Hadoop应用开发实战详解(修订版)源代码》是一本专注于Hadoop开发实践的书籍,其源代码提供了丰富的学习资源,适合初学者和有经验的开发者深入理解和掌握Hadoop技术栈。Hadoop作为大数据处理的核心...
这本书由Tom White撰写,全面深入地介绍了Hadoop的各个组件及其工作原理,对于初学者和专业人士来说都是一份宝贵的参考资料。 Hadoop是分布式计算领域的开源框架,主要用于处理和存储大量数据。它的核心包括两个...
《Hadoop权威指南》中文版是全面了解和深入学习Hadoop技术的重要参考资料,它涵盖了Hadoop生态系统中的核心组件以及相关的分布式计算概念。这本书详细解析了Hadoop的设计原理、架构、安装配置、操作维护以及实际应用...
总结,"hadoop组件程序包.zip"是一个为Hadoop初学者量身定制的学习资源,通过深入学习和实践,初学者可以全面掌握Hadoop的核心组件及其工作原理,为未来在大数据领域的探索和发展打下坚实基础。
【Hadoop源代码存档详解】 Hadoop是Apache软件基金会的一个开源项目,它是一个分布式文件系统,旨在提高数据处理和存储的效率。这个"hadopp源代码存档"包含了Hadoop项目的完整源代码,供开发者深入理解其内部机制,...
### Hadoop学习步骤详解 #### 一、选择合适的Hadoop版本并熟悉Hadoop原理 在开始学习Hadoop之前,首先需要选择一个合适的Hadoop版本。Hadoop作为一个分布式计算框架,经历了多个版本的发展,包括Hadoop 1.x、...
2. HDFS详解: - 分布式存储:HDFS将大文件分割成多个块,这些块被复制并分散存储在不同的节点上,提高了数据的容错性和可用性。 - NameNode与DataNode:NameNode作为元数据管理节点,保存文件系统的目录结构和...
本篇教程将深入浅出地讲解如何在单机环境下搭建Hadoop环境,帮助初学者快速入门。 Hadoop是Apache基金会开发的一个开源分布式计算框架,它设计用于高效地处理和存储海量数据。核心组件包括Hadoop Distributed File ...
3. MapReduce框架详解: - JobTracker:在Hadoop 2.x之前的角色,负责任务调度和资源管理。 - YARN(Yet Another Resource Negotiator):Hadoop 2.x引入的新资源管理系统,分离了任务调度和资源管理。 - ...
**Hadoop学习笔记详解** Hadoop是一个开源的分布式计算框架,由Apache基金会开发,主要用于处理和存储海量数据。它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,两者构成了大数据处理的基础...
- HDFS详解:Hadoop分布式文件系统的架构、数据块、副本策略、NameNode与DataNode的角色以及数据读写流程。 - MapReduce原理:详细介绍Map和Reduce阶段的工作机制,以及shuffle和sort过程。 - YARN详解:资源调度...
《Hadoop学习笔记详解》 Hadoop,作为大数据处理领域中的核心框架,是Apache软件基金会下的一个开源项目,主要用于分布式...通过深入学习这些笔记,读者可以逐步掌握Hadoop的精髓,为应对大数据时代的挑战做好准备。
根据提供的文件信息,我们...通过学习Hadoop的核心组件和技术,可以更好地应对日益增长的数据处理需求。此外,随着Hadoop生态系统的不断发展和完善,新的工具和技术也在不断涌现,这为开发者提供了更多的选择和支持。
《Hadoop 3.1.4安装与使用详解》 Hadoop是Apache软件基金会开发的开源分布式计算框架,主要用于处理和存储大规模数据。Hadoop 3.1.4是其一个重要版本,它在Hadoop 3.x系列中提供了许多增强功能和性能优化,包括对大...
对于初学者,了解Hadoop的基本概念和架构是第一步,然后可以深入学习HDFS和MapReduce的工作原理。接下来,通过实际项目实践,熟悉Hadoop的安装配置和数据处理流程。同时,学习Hadoop生态系统中的其他工具,如Hive,...
- 配置文件详解:如core-site.xml, hdfs-site.xml, mapred-site.xml等,这些配置文件是搭建和管理Hadoop集群的关键。 - NameNode和DataNode:NameNode是HDFS的元数据管理节点,DataNode则是存储数据的节点,理解...
在2015年的夏季,通过对《Hadoop权威指南》的深入学习,我们可以理解MapReduce的基本工作原理及其编程模型。 **MapReduce的基本概念** 1. **Map阶段**: 在Map阶段,输入数据被分割成多个块,并在集群中的多台机器...
这个PPT课件将帮助学习者系统地了解Hadoop的基本概念和操作,为进一步深入学习大数据处理技术奠定坚实基础。同时,配合"说明文档.txt",可以获取更详尽的步骤指导和学习建议,使学习过程更为高效。对于寻求Hadoop...
### Hadoop源码分析知识点概览 #### 一、Hadoop概述与背景 - **Google核心技术**:Hadoop的设计理念很...通过以上几个方面的详细阐述,可以全面地理解Hadoop的核心技术和应用场景,为后续的深入学习打下坚实的基础。
通过以上对Hadoop经典实战教程的学习,我们不仅了解了Hadoop的基本概念和核心组件,还深入了解了HDFS和MapReduce的工作原理,掌握了Hadoop的高级特性和性能优化方法。更重要的是,通过具体案例的分析,读者可以更好...