`
flyingdutchman
  • 浏览: 358999 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hadoop深入学习:Reduce组件详解

阅读更多
        在本节中我们主要来学习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海量数据处理详解与项目实战

    由于给定的文件内容部分涉及到PDF电子书的提供信息,并非技术知识点,故这部分内容将被忽略,重点将...以上内容仅为对Hadoop海量数据处理技术的部分概述,实际应用中还需结合具体业务场景和数据特性来深入学习和实践。

    深入云计算:Hadoop应用开发实战详解(修订版)源代码

    《深入云计算:Hadoop应用开发实战详解(修订版)源代码》是一本专注于Hadoop开发实践的书籍,其源代码提供了丰富的学习资源,适合初学者和有经验的开发者深入理解和掌握Hadoop技术栈。Hadoop作为大数据处理的核心...

    Hadoop权威指南中文版(完全版)

    《Hadoop权威指南》中文版是全面了解和深入学习Hadoop技术的重要参考资料,它涵盖了Hadoop生态系统中的核心组件以及相关的分布式计算概念。这本书详细解析了Hadoop的设计原理、架构、安装配置、操作维护以及实际应用...

    hadoop组件程序包.zip

    总结,"hadoop组件程序包.zip"是一个为Hadoop初学者量身定制的学习资源,通过深入学习和实践,初学者可以全面掌握Hadoop的核心组件及其工作原理,为未来在大数据领域的探索和发展打下坚实基础。

    hadoop应用开发技术详解代码

    本书“Hadoop应用开发技术详解”的源代码涵盖了第3、4、5、7、8、10、11和12章的内容,为读者提供了丰富的实践示例,帮助理解并应用Hadoop生态系统中的关键组件。以下是对这些章节涉及知识点的详细解释: 1. **...

    Hadoop应用开发技术详解

    2. HDFS详解:HDFS设计目标是能够在普通硬件上运行,具有高度容错性。它将大文件分割成块,分散存储在多台机器上,保证数据的冗余和可用性。了解HDFS的数据读写流程、命名节点(NameNode)和数据节点(DataNode)的...

    hadoop源代码存档

    【Hadoop源代码存档详解】 Hadoop是Apache软件基金会的一个开源项目,它是一个分布式文件系统,旨在提高数据处理和存储的效率。这个"hadopp源代码存档"包含了Hadoop项目的完整源代码,供开发者深入理解其内部机制,...

    hadoop学习步骤说明

    ### Hadoop学习步骤详解 #### 一、选择合适的Hadoop版本并熟悉Hadoop原理 在开始学习Hadoop之前,首先需要选择一个合适的Hadoop版本。Hadoop作为一个分布式计算框架,经历了多个版本的发展,包括Hadoop 1.x、...

    Hadoop源码包

    2. HDFS详解: - 分布式存储:HDFS将大文件分割成多个块,这些块被复制并分散存储在不同的节点上,提高了数据的容错性和可用性。 - NameNode与DataNode:NameNode作为元数据管理节点,保存文件系统的目录结构和...

    大数据云计算技术系列 hadoop单机版搭建图文详解(共14页).rar

    本篇教程将深入浅出地讲解如何在单机环境下搭建Hadoop环境,帮助初学者快速入门。 Hadoop是Apache基金会开发的一个开源分布式计算框架,它设计用于高效地处理和存储海量数据。核心组件包括Hadoop Distributed File ...

    Hadoop: The Definitive Guide 中英两版

    这本书由Tom White撰写,全面深入地介绍了Hadoop的各个组件及其工作原理,对于初学者和专业人士来说都是一份宝贵的参考资料。 Hadoop是分布式计算领域的开源框架,主要用于处理和存储大量数据。它的核心包括两个...

    hadoop-2.7.1:Hadoop源码分析

    3. MapReduce框架详解: - JobTracker:在Hadoop 2.x之前的角色,负责任务调度和资源管理。 - YARN(Yet Another Resource Negotiator):Hadoop 2.x引入的新资源管理系统,分离了任务调度和资源管理。 - ...

    最新Hadoop学习笔记

    **Hadoop学习笔记详解** Hadoop是一个开源的分布式计算框架,由Apache基金会开发,主要用于处理和存储海量数据。它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,两者构成了大数据处理的基础...

    hadoop从入门到精通课件pdf

    - HDFS详解:Hadoop分布式文件系统的架构、数据块、副本策略、NameNode与DataNode的角色以及数据读写流程。 - MapReduce原理:详细介绍Map和Reduce阶段的工作机制,以及shuffle和sort过程。 - YARN详解:资源调度...

    Hadoop海量数据处理 技术详解与项目实战 PDF电子书下载 带书签目录 完整版

    《Hadoop海量数据处理:技术详解与项目实战》是一本深度探讨Hadoop在大数据处理中的应用的专业书籍。...总的来说,《Hadoop海量数据处理:技术详解与项目实战》是学习和掌握Hadoop不可或缺的参考资料。

    hadoop学习笔记.rar

    《Hadoop学习笔记详解》 Hadoop,作为大数据处理领域中的核心框架,是Apache软件基金会下的一个开源项目,主要用于分布式...通过深入学习这些笔记,读者可以逐步掌握Hadoop的精髓,为应对大数据时代的挑战做好准备。

    Hadoop技术详解PDF电子书下载 带书签目录

    根据提供的文件信息,我们...通过学习Hadoop的核心组件和技术,可以更好地应对日益增长的数据处理需求。此外,随着Hadoop生态系统的不断发展和完善,新的工具和技术也在不断涌现,这为开发者提供了更多的选择和支持。

    Hadoop 海量数据处理技术详解与项目实战

    《Hadoop海量数据处理技术详解与项目实战》这本书深入浅出地介绍了Hadoop的核心技术和实践策略,是学习和提升Hadoop技能的理想读物。无论你是初入大数据领域的新人,还是寻求技术进阶的工程师,都能从中受益匪浅。

    Hadoop应用开发技术详解pdf 

    阅读《Hadoop应用开发技术详解》这本书,你将获得关于Hadoop的全面知识,包括安装、配置、编程模型、生态系统组件以及最佳实践等。通过学习和实践,你将具备开发高效Hadoop应用的能力,跟上大数据时代的步伐。 总之...

Global site tag (gtag.js) - Google Analytics