在本节中我们主要来学习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
分享到:
相关推荐
由于给定的文件内容部分涉及到PDF电子书的提供信息,并非技术知识点,故这部分内容将被忽略,重点将...以上内容仅为对Hadoop海量数据处理技术的部分概述,实际应用中还需结合具体业务场景和数据特性来深入学习和实践。
《深入云计算:Hadoop应用开发实战详解(修订版)源代码》是一本专注于Hadoop开发实践的书籍,其源代码提供了丰富的学习资源,适合初学者和有经验的开发者深入理解和掌握Hadoop技术栈。Hadoop作为大数据处理的核心...
《Hadoop权威指南》中文版是全面了解和深入学习Hadoop技术的重要参考资料,它涵盖了Hadoop生态系统中的核心组件以及相关的分布式计算概念。这本书详细解析了Hadoop的设计原理、架构、安装配置、操作维护以及实际应用...
总结,"hadoop组件程序包.zip"是一个为Hadoop初学者量身定制的学习资源,通过深入学习和实践,初学者可以全面掌握Hadoop的核心组件及其工作原理,为未来在大数据领域的探索和发展打下坚实基础。
本书“Hadoop应用开发技术详解”的源代码涵盖了第3、4、5、7、8、10、11和12章的内容,为读者提供了丰富的实践示例,帮助理解并应用Hadoop生态系统中的关键组件。以下是对这些章节涉及知识点的详细解释: 1. **...
2. HDFS详解:HDFS设计目标是能够在普通硬件上运行,具有高度容错性。它将大文件分割成块,分散存储在多台机器上,保证数据的冗余和可用性。了解HDFS的数据读写流程、命名节点(NameNode)和数据节点(DataNode)的...
【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 ...
这本书由Tom White撰写,全面深入地介绍了Hadoop的各个组件及其工作原理,对于初学者和专业人士来说都是一份宝贵的参考资料。 Hadoop是分布式计算领域的开源框架,主要用于处理和存储大量数据。它的核心包括两个...
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在大数据处理中的应用的专业书籍。...总的来说,《Hadoop海量数据处理:技术详解与项目实战》是学习和掌握Hadoop不可或缺的参考资料。
《Hadoop学习笔记详解》 Hadoop,作为大数据处理领域中的核心框架,是Apache软件基金会下的一个开源项目,主要用于分布式...通过深入学习这些笔记,读者可以逐步掌握Hadoop的精髓,为应对大数据时代的挑战做好准备。
根据提供的文件信息,我们...通过学习Hadoop的核心组件和技术,可以更好地应对日益增长的数据处理需求。此外,随着Hadoop生态系统的不断发展和完善,新的工具和技术也在不断涌现,这为开发者提供了更多的选择和支持。
《Hadoop海量数据处理技术详解与项目实战》这本书深入浅出地介绍了Hadoop的核心技术和实践策略,是学习和提升Hadoop技能的理想读物。无论你是初入大数据领域的新人,还是寻求技术进阶的工程师,都能从中受益匪浅。
阅读《Hadoop应用开发技术详解》这本书,你将获得关于Hadoop的全面知识,包括安装、配置、编程模型、生态系统组件以及最佳实践等。通过学习和实践,你将具备开发高效Hadoop应用的能力,跟上大数据时代的步伐。 总之...