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

Hadoop深入学习:Map Task和Reduce Task的执行流程

阅读更多
        本节我们主要看一下Map Task和Reduce Task的执行流程:


        好了,接下来我们再看看Map Task和Reduce Task的一个完整的执行流程:
        1)、TaskNode节点启动分配JobTracker个Map Task任务,启用InputFormat对象(具体为RecordReader)读取分配给本节点split分片,将每一行的数据读取成key/value键值对;
        2)、mapper程序的map()函数会接收key/value键值对的数据,做逻辑处理,然后将之输出;
        3)、(开始MapReduce的shuffle过程,该过程的性能的好坏可以直接决定MapReduce的性能。)mapper程序会将经处理过的key/value数据先加入该Task的环形的内存缓冲区,直到达到缓存达到阀值,然后会将数据spill到linux的本地磁盘上(注意,这些中间数据不会被保存到HDFS),生成一个磁盘文件;
        4)、mapper处理玩自己分片的数据后,会将磁盘上的所有spill文件合并;
        5)、当一个Map Task任务处理完后,TaskTracker节点会告诉JobTracker节点任务执行完毕并等待新的任务,然后JobTracker会告知reducer程序,区获取属于reducer自己的数据;
        (注:第3 - 5步是Map断的shuffle阶段。)
        6)、reducer通过多线程(默认为5个copy线程)开始到已执行完成的mapper节点上copy属于自己的partition数据;
        7)、reducer会先将copy的数据先放在本机的内存缓存中,合并拷贝数据,当缓存中放不下copy数据时,会将内丛中的的数据刷新到磁盘上,数据copy完成后,会将虽有数据合并成一个大文件,数据格式由原来的<key,value>变成<key,value list>;
        8)、将合并后的文件排序;
        (注:第6 - 8步是Map断的shuffle阶段。)
        9)、接下来reducer开始执行业务逻辑处理的reduce()方法,并将数据最终输出到HDFS上。
        10)、所有的Task都执行完成后,整个处理过程完成。
  • 大小: 93.4 KB
1
3
分享到:
评论
1 楼 licguo 2013-05-27  
正打算学习学习

相关推荐

    Hadoop学习总结之四:Map-Reduce过程解析

    ### Hadoop MapReduce任务提交与执行流程解析 #### 一、客户端提交任务 在Hadoop MapReduce框架中,客户端的任务提交是整个MapReduce作业启动的关键步骤。这一过程主要由`JobClient`类中的`runJob(JobConf job)`...

    Hadoop技术内幕 深入理解MapReduce架构设计与实现原理 高清完整中文版PDF下载

    MapReduce的工作流程可以简单概括为两个阶段:Map阶段和Reduce阶段。 1. **Map阶段**:在这个阶段,输入数据被分割成小块,每一块由一个Map任务处理。每个Map任务接收一小部分输入数据,对其进行处理,并输出一系列...

    远程调用执行Hadoop Map/Reduce

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

    Hadoop运行流程详解

    - MapTask和ReduceTask:Mapper和Combiner(如有配置)由MapTask调用,Reducer由ReduceTask调用。Mapper读取输入数据,经过处理后生成中间结果,若配置了Combiner,则在Mapper本地进行预聚合。ReduceTask接收Map...

    Hadoop技术内幕:深入解析MapReduce架构设计与实现原理

    Task实现部分则深入到单个任务的执行层面,解析了任务执行的上下文、任务数据的读取和写入过程。 书中还涉及了性能优化、安全机制、多用户作业调度器以及下一代MapReduce框架等高级主题。性能优化讨论了如何根据...

    Hadoop源代码分析(类Task)

    在Hadoop框架中,Task类是一个关键的抽象类,它是MapTask和ReduceTask的父类,分别对应Map阶段和Reduce阶段的执行单元。Task类定义了任务的基本行为和状态管理,是整个MapReduce流程中不可或缺的一部分。 1. **成员...

    Hadoop源代码分析(Task的内部类和辅助类)

    在Hadoop框架中,`Task`类是处理数据的核心组件之一,它包括`MapTask`和`ReduceTask`两种类型,分别负责数据的映射处理和归约处理。本文将深入剖析`Task`类中的内部类及其辅助类,旨在理解这些类如何协同工作以支持...

    Hadoop期末整理.pdf

    - MapReduce:处理和计算数据的编程模型,包括JobClient(提交作业)、JobTracker(协调作业执行)、TaskTracker(执行Map/Reduce任务)以及MapTask和ReduceTask(执行具体任务)。 4. Hadoop 相关技术: - HBase...

    MapReduce详解Shuffle过程

    在Hadoop这样的集群环境中,大部分map task与reduce task的执行是在不同的节点上。 Shuffle过程的主要目标是: 1. 完整地从map task端拉取数据到reduce端。 2. 在跨节点拉取数据时,尽可能地减少对带宽的不必要...

    hadoop-2.10.0-src.tar.gz

    源码中,MapTask和ReduceTask的执行流程值得深入分析。 四、源码学习价值 阅读Hadoop 2.10.0的源码,可以帮助我们: 1. 理解Hadoop的内部工作机制,提升问题排查能力。 2. 学习分布式系统的设计与实现,为自定义...

    Hadoop云计算2.0笔记第一课Hadoop介绍

    TaskTracker 是任务跟踪器,负责运行 Map Task 和 Reduce Task,与 JobTracker 交互,执行命令,并汇报任务状态。 6. Map 和 Reduce 任务: Map 任务负责解析每条数据记录,传递给用户编写的 map(),将 map() 输出...

    Hadoop学习总结之五:Hadoop的运行痕迹

    由于Map-Reduce任务流程较为复杂,为了便于调试,需要对NameNode和DataNode进行额外的配置: - **NameNode特殊配置**: - **JVM复用**: - `mapred.job.reuse.jvm.num.tasks`: `-1` (允许Map和Reduce任务共享同一个...

    Hadoop技术-MapReduce工作原理.pptx

    MapReduce是Hadoop框架的核心组件之一,用于处理和生成...MapTask负责数据的输入、处理和本地溢写,而ReduceTask则处理数据的传输、合并、排序和reduce操作。理解这两个阶段的内部机制对于优化Hadoop作业性能至关重要。

    提高hadoop的mapreduce job效率笔记

    例如,避免在 Map 或 Reduce 函数中进行不必要的计算,减少对象创建,以及利用缓存和批处理。 通过综合运用这些优化策略,可以显著提升 Hadoop MapReduce Job 的处理效率,同时确保数据处理的准确性和可扩展性。...

    详细介绍Hadoop家族中的MapReduce原理

    MapReduce 进程(MR)包括三个实例进程:MrAppMaster、MapTask 和 ReduceTask。MrAppMaster 负责整个程序的过程调度及状态协调。MapTask 负责 Map 阶段的整个数据处理流程。ReduceTask 负责 Reduce 阶段的整个数据...

    Hadoop大数据期末考试重点

    20. **ReduceTask的工作流程**:ReduceTask包含Copy、Merge、Sort、Reduce和Write五个阶段。 21. **Mapper类**:Hadoop提供的Mapper类是实现Map阶段逻辑的基础类。 以上是对Hadoop大数据期末考试重点内容的详细...

    Hadoop平台技术 排序操作案例.docx

    总结来说,Hadoop的排序机制是通过MapTask和ReduceTask的组合操作实现的,而自定义排序则需要实现WritableComparable接口并重写compareTo方法。这种灵活性使得用户可以根据具体业务需求对数据进行复杂排序,从而优化...

Global site tag (gtag.js) - Google Analytics