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

Hadoop map task中Partitioner执行时机

阅读更多

 

MapTask.runNewMapper() ->

  ...

  if (job.getNumReduceTasks() == 0) {

      // 无reduce,直接写HDFS

      // 这个writer输出时不执行Partitioner.getPartition()方法

     output =  new NewDirectOutputCollector(taskContext, job, umbilical, reporter);

  } else {

       // 执行Reduce函数,写入本地文件

      // 初始化Partitioner
      output = new NewOutputCollector(taskContext, job, umbilical, reporter); 
  }

  // 将output传入mapperContext

  mapperContext = contextConstructor.newInstance(mapper, job, getTaskID(),
                                                     input, output, committer,
                                                     reporter, split);

 

  mapper.run(mapperContext); <--

 

mapper.run(mapperContext) ->

  while (context.nextKeyValue()) {

      map(context.getCurrentKey(), context.getCurrentValue(), context); <-
    }

 

//map()函数由用户实现,并调用context.write()方法输出
map() ->

  context.write((KEYOUT) key, (VALUEOUT) value); <-

 

write()

  // 实际调用NewOutputCollector.wirte()

  // 先计算key-value的partition,然后执行collect输出数据到内存缓冲区

  collector.collect(key, value, partitioner.getPartition(key, value, partitions));

 

结论:

  1. Partitioner是在map函数执行context.write()时被调用。
  2. 如果没有Reduce函数,则MapTask不会执行Partitioner.getPartition()方法。

 

 --end

分享到:
评论

相关推荐

    远程调用执行Hadoop Map/Reduce

    例如,`org.apache.hadoop.mapred.MapTask`和`org.apache.hadoop.mapreduce.ReduceTask`分别对应Map和Reduce任务的实现,开发者可以通过阅读这些源码了解任务执行的详细流程。 7. **工具集成**:有许多开源工具可以...

    Hadoop 自定义 Partitioner 源代码

    其中,Partitioner 是 Hadoop MapReduce 框架中的关键组件,它负责决定 map 函数产生的中间键值对(key-value pairs)应被哪些 reduce task 处理。自定义 Partitioner 允许用户根据业务需求定制键的分发策略,从而...

    Hadoop源代码分析(MapTask辅助类,II)

    在Hadoop中,MapTask是MapReduce框架的关键组件,负责执行Mapper阶段的工作。MapTask辅助类,特别是MapOutputBuffer,是Mapper输出数据管理的核心部分。本文将继续深入分析MapOutputBuffer的内部实现,以便理解...

    MapTask工作机制图文详解

    MapTask工作机制是Hadoop MapReduce框架中的一个关键组件,负责将输入数据处理并输出结果。本文将详细介绍MapTask工作机制的五个阶段:Read阶段、Map阶段、Collect收集阶段、Spill阶段和Combine阶段。 Read阶段 在...

    Hadoop的分割程序的例子。程序显示我们如何在Hadoop的MapReduce程序使用一个分区.zip

    同时,这也涉及到对Hadoop MapReduce框架的理解,包括其核心组件如JobTracker(在YARN中是ResourceManager)、TaskTracker(在YARN中是NodeManager)以及Task(MapTask和ReduceTask)的工作机制。

    hadoop课后题带答案

    9. MapReduce工作流程:包括分片、格式化数据源、MapTask执行、Shuffle过程、ReduceTask执行和写入文件等步骤。 10. Partitioner:Partitioner的作用是将key均匀分布到不同的ReduceTask上,以优化并行计算。 11. ...

    Hadoop的MapReduce执行过程介绍.pdf

    Hadoop将Job拆分为map tasks和reduce tasks,JobTracker负责任务调度,TaskTracker执行任务。输入数据被分割成input splits,每个split对应一个map task。Reduce任务的输入是map任务的输出,经过分区后分配给不同...

    Hadoop源代码分析(IDs类和Context类)

    本文将重点分析Hadoop中的IDs类与Context类,并探讨它们在Hadoop MapReduce框架中的作用。 #### 二、IDs类分析 ##### 1. ID类概述 ID类在Hadoop中扮演着重要的角色,它负责唯一标识Hadoop系统中的各种实体,如作业...

    MapTask阶段shuffle源码分析

    MapTask阶段shuffle源码分析是Hadoop MapReduce框架中一个重要的组件,它负责将Mapper的输出数据进行分区、排序和缓存,以便于后续的Reduce任务处理。在本文中,我们将深入探讨MapTask阶段shuffle源码分析的实现机制...

    尚硅谷大数据技术之Hadoop

    3. MapReduce原理与编程模型:深入解析Map函数和Reduce函数的实现,以及如何编写Mapper和Reducer类,理解job、task、input/output format等概念。 4. Hadoop实战:通过实际案例分析,演示如何使用Hadoop解决实际问题...

    MapReduce平台优化详解.pdf

    Partitioner是MapReduce中的一种重要组件,位于Map阶段,负责将Mapper的输出结果分区并均匀分布到Reducer上面执行。Partitioner的默认实现是HashPartitioner,用户也可以自定义Partitioner来满足特定的需求。 ...

    云帆大数据----04 MapReduce入门编程、框架原理、

    MapTask负责执行Map操作,而ReduceTask则执行Reduce操作。根据用户定义的Map类和Reduce类,TaskTracker在集群的各个节点上运行相应的任务。 MapReduce的编程模型非常简洁明了,主要包括输入输出类型、Job提交流程、...

    MapReduce介绍

    - **Partitioning**:Reduce Task接收来自不同Map Task的数据,通过Partitioner来确保相同键的数据进入同一个Reduce Task中进行处理。 通过以上三个步骤,我们可以成功运行MapReduce任务,完成对大规模数据集的处理...

    Hadoop应用系列2--MapReduce原理浅析(上)

    `MapTask`和`ReduceTask`类则分别负责Map和Reduce阶段的具体执行。此外,`Partitioner`控制分区逻辑,`OutputFormat`和`InputFormat`处理输入输出格式。 六、工具支持 Hadoop提供了丰富的工具来支持MapReduce作业...

    Hadoop二次开发必懂

    MapTask和ReduceTask是Hadoop MapReduce框架中的核心类,负责执行Map和Reduce任务。MapTask接收InputSplit,通过反射机制创建InputSplit实例,然后运行Mapper。ReduceTask则负责接收和处理来自多个Map任务的中间结果...

    Hadoop权威指南 第3版.pdf

    - **ApplicationMaster**:每个应用程序的管理器,负责向ResourceManager申请资源,并协调Task的调度和执行。 - **YARN的工作流程**:用户提交应用程序后,ResourceManager会为该应用程序启动一个ApplicationMaster...

    hadoop.pdf

    此外,Hadoop还提供了一系列的接口,如Mapper、Reducer、Combiner、InputFormat、OutputFormat、Partitioner等,这些接口使得开发者能够更加灵活地控制数据的处理流程。 ### Hadoop的生态系统 Hadoop不仅仅是一个...

    hadoop丶spark就业面试题

    3. **MapReduce**:Map阶段和Reduce阶段的具体操作,以及Combiner和Partitioner的作用。 4. **YARN(Yet Another Resource Negotiator)**:作为Hadoop的资源管理系统,如何调度和管理应用程序。 5. **Hadoop优化**...

    mapreduce详细流程

    3. **任务调度(Task Scheduling)**:TaskTracker会定期向JobTracker发送心跳信息,JobTracker根据可用资源情况将Map任务分配给TaskTracker执行。 4. **Map阶段**: - **数据读取(Input Split)**:Map任务从...

Global site tag (gtag.js) - Google Analytics