`
eksliang
  • 浏览: 599586 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

MapReduce详解

阅读更多

转载请出自出处:http://eksliang.iteye.com/blog/2228705

一.Hadoop1.0中MapReduce的组成

1.从功能模块角度
  • 客户端:提交MapReduce作业;
  • JobTracker:

1.作业调度:将一个作业(Job)分成若干个子任务分发到taskTraker中去执行

2.任务监控:TaskTracker发送心跳给JobTracker报告自己的运行状态,以让JobTracker能够监控到他

3.资源管理:每个任务向JobTracker申请资源

4.监控过程中发现失败或者运行过慢的任务,对他进行重新启动

  • TaskTraker:

主动发送心跳给jobTracker并与JobTracker他通信,从而接受到JobTracker发送过来需要执行的任务

2.从架构的角度
  1. 编程模型(新旧API)
  2.  运行环境(JobTracker和TaksTracker)
  3.  数据处理引擎(MapTask和ReduceTask)

 

二.MapReduce(hadoop1.0)的资源管理模型

2.1MapReduce的资源组成由两部分组成
  • 资源表示模型

用于描述资源表示形式,Hadoop1.0使用“槽位(slot)”组织各个节点的资源,为了简化资源的管理,Hadoop将各个节点上资源(CPU、内存、网络IO、磁盘IO等等)等量切分成若干份,每一份用“slot”表示,同时规定一个task可根据实际情况需要占用多个”slot”。

简单的说:hadoop1.0将多维度的资源进行了抽象,使用“slot”来表示,从而简化对资源的管理。

  • 资源分配模型

而资源分配模型则决定如何将资源分配给各个作业/任务,在Hadoop中,这一部分由一个插拔式的调度器完成。

更进一步说,slot相当于运行的“许可证”,一个任务只有获得“许可证”后,才能够获得运行的机会,这也意味着,每一个节点上的slot的数量决定了当前节点能够并发执行多少个任务。Hadoop1.0为了区分MapTask跟ReduceTask所使用资源的差异,进一步将slot分为MapSlot跟ReduceSlot,他们分别只能被MapTask跟ReduceTask使用。

 

Hadoop集群管理员可根据各个节点硬件配置和应用特点为它们分配不同的map slot数(由参数mapred.tasktracker.map.tasks.maximum指定)和reduce slot数(由参数mapred.tasktrackerreduce.tasks.maximum指定)

 

2.2Hadoop1.0资源管理的缺点
  1. 静态资源配置。采用了静态资源设置策略,即每个节点事先配置好可用的slot总数,这些slot数目一旦启动后无法再动态修改。
  2. 资源无法共享。Hadoop 1.0将slot分为Map slot和Reduce slot两种,且不允许共享。对于一个作业,刚开始运行时,Map slot资源紧缺而Reduce slot空闲,当Map Task全部运行完成后,Reduce slot紧缺而Map slot空闲。很明显,这种区分slot类别的资源管理方案在一定程度上降低了slot的利用率。
  3. 资源划分粒度过大。资源划分粒度过大,往往会造成节点资源利用率过高或者过低 ,比如,管理员事先规划好一个slot代表2GB内存和1个CPU,如果一个应用程序的任务只需要1GB内存,则会产生“资源碎片”,从而降低集群资源的利用率,同样,如果一个应用程序的任务需要3GB内存,则会隐式地抢占其他任务的资源,从而产生资源抢占现象,可能导致集群利用率过高。
  4. 没引入有效的资源隔离机制。Hadoop 1.0仅采用了基于jvm的资源隔离机制,这种方式仍过于粗糙,很多资源,比如CPU,无法进行隔离,这会造成同一个节点上的任务之间干扰严重。

三.Year的资源管理模型

      在实际系统中,资源本身是多维度的,包括CPU、内存、网络I/O和磁盘I/O等,因此,如果想精确控制资源分配,不能再有slot的概念,最直接的方法就是是让任务直接向调度器申请自己需要的资源(比如某个任务可申请1GB 内存和1个CPU),而调度器则按照任务实际需求为其精细地分配对应的资源量,不再简单的将一个Slot分配给它,Hadoop 2.0正式采用了这种基于真实资源量的资源分配方案。

       MRv2最基本的设计思想是将JobTracker的两个主要功能,即资源管理和作业调度/监控分成两个独立的进程。全局的ResourceManager(RM)和与每个应用相关的ApplicationMaster(AM)。

“RM有两个组件组成:调度器(Scheduler)应用管理器(ApplicationsManager,ASM)”

如下图是官网提供的year架构图



 

3.1 Year的功能组成模块

       调度器是个可插拔的组件,负责作业的调度并将集群中的资源分配给应用。YARN自带了多个资源调度器,如Capacity Scheduler和Fair Scheduler等。

       ASM:负责接收任务,并指定AS运行的节点NM节点,同时启动AM

 

  • NM:是每个节点上的资源管理,负责处理来自RM的命令,处理AM的命令,主动发送心跳给RM,让RM能够监控NM的运行状态。
  • AM:就是我们的应用(应用可以是mapduce程序或者DAG有向无环图)
  • Container:是YARN中资源的抽象,将操作系统中多维度的资源(CPU、内存、网络I/O和磁盘I/O等)封装成container,是Year中资源的基本单位
3.2 应用在Year中的运行流程
  1. 客户端提交一个应用程序AM到ResourceManager上
  2. ResourceManager先与集群中NodeManager通信,根据集群中NodeManger的资源   使用情况,确定运行AM的NodeManager;
  3. 确定了运行的节点后,AM马上向RM申请资源,资源被封装成Container的形式响应给AM,申请到资源后和确定了执行的NM后,RM马上在NM上启动AM
  4. 所有任务运行完成后,ApplicationMaster向ResourceManager注销,整个应用程序运行结束。

 

四.MapReduce1与MapRreduce2的区别

      如果从MapReduce的功能模块去区分他们,会比较乱,很难直观的说清楚,如果从MapReduce的系统架构入手,这个问题就变得简单了

MapReduce1从架构的角度可以分为三个部分

  1. 编程模型(新旧API)
  2. 运行环境(JobTracker和TaskTracker)
  3. 数据处理引擎(MapTask和ReduceTask)

MapReduce2从架构的角度可以分为三个部分

  1. 编程模型(新旧API)
  2. 运行环境(Year)
  3. 数据处理引擎(MapTask和ReduceTask)

从架构可以很清楚区分到,他们之间的区别主要在运行环境变了!

 

参考博客:

Shuffle和排序:http://langyu.iteye.com/blog/992916

董的博客Mapreduce的资源分配:http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-resourcemanager-nodemanager/

 

  • 大小: 144.7 KB
分享到:
评论

相关推荐

    006_hadoop中MapReduce详解_3

    "006_hadoop中MapReduce详解_3"可能是指一个系列教程的第三部分,着重讲解MapReduce的核心概念、工作原理以及实际应用。在这个部分,我们可能会探讨更深入的技术细节和优化策略。 MapReduce的工作流程分为两个主要...

    MapReduce详解包括配置文件

    ### MapReduce详解包括配置文件 #### 一、MapReduce概览与原理 MapReduce作为Hadoop的核心组件之一,提供了一种高效、可靠的分布式计算框架。它最初由Doug Cutting基于Google发表的论文《MapReduce: Simplified ...

    MapReduce详解Shuffle过程

    MapReduce详解Shuffle过程 MapReduce的Shuffle过程是MapReduce的核心部分,也被称为奇迹发生的地方。要想理解MapReduce,Shuffle是必须要了解的。Shuffle过程描述着数据从map task输出到reduce task输入的这段过程...

    大数据Hadoop核心之MapReduce详解

    大数据Hadoop核心之MapReduce详解 MapReduce是Hadoop核心模块之一,作为一个分布式运算程序的编程框架,用于用户开发基于Hadoop的数据分析应用。MapReduce的核心功能是将用户编写的业务逻辑代码和自带默认组件整合...

    hadoop2.X配置详解和mapreduce详解

    在Hadoop 2.x中,MapReduce进行了重大改进,包括YARN(Yet Another Resource Negotiator)的引入,它作为全局资源管理系统,负责管理和调度集群上的计算资源。MapReduce作业现在通过YARN进行调度和执行,提高了集群...

    MapReduce平台优化详解.pdf

    MapReduce平台优化详解 MapReduce平台优化是Hadoop生态系统中的一种关键技术,旨在提高MapReduce作业的执行效率和性能。本文将从MapReduce优化的角度,深入剖析MapReduce平台的优化方法,涵盖Combiner、Partitioner...

    005_hadoop中MapReduce详解_2

    在Hadoop生态系统中,MapReduce是一种分布式计算框架,它允许我们处理海量数据并行化,非常适合大规模数据集的处理。本文将深入解析MapReduce的工作原理、核心组件以及如何编写一个基本的MapReduce程序。 MapReduce...

    基于流水线的MapReduce.zip

    《基于流水线的MapReduce详解》 在大数据处理领域,Hadoop是一个不可或缺的名字,它以其分布式文件系统(HDFS)和MapReduce计算框架,为海量数据处理提供了强大的支撑。而“基于流水线的MapReduce”是Hadoop在处理...

    Hadoop数据处理框架MapReduce原理及开发

    #### 三、MapReduce详解 **3.1 MapReduce的工作原理** MapReduce是一种基于分布式计算模型的编程框架,它将大规模数据处理任务分为两个阶段:Map阶段和Reduce阶段。 - **Map阶段**:在这个阶段,原始数据被划分为...

    MapReduce计算模式详解

    ### MapReduce计算模式详解 #### 一、MapReduce简单概述 MapReduce是一种高效的大数据处理技术,它由Google提出并在Hadoop中得到了广泛的应用。MapReduce不仅是一个计算平台,还是一个并行计算框架和并行程序设计...

    MapReduce过程详解中文最新版本

    本文旨在深入解析MapReduce的工作原理,以期为对此领域感兴趣的读者提供指导和帮助。欢迎各位有需求的朋友前来查阅。

    基于MapReduce的矩阵相乘算法代码及其使用

    ### 基于MapReduce的矩阵相乘算法详解 #### 一、背景介绍 在大数据处理领域,MapReduce 是一种非常流行的编程模型,用于并行处理海量数据集。该模型由 Google 首次提出,并被广泛应用于搜索引擎、推荐系统等场景。...

    Hadoop GFS

    《Hadoop GFS与MapReduce详解》 在大数据处理领域,Hadoop是一个不可或缺的名字,而GFS(Google File System)和MapReduce则是Hadoop生态系统中的核心组件。本篇将深入探讨这三个概念及其相互关系。 首先,GFS是...

    Hadoop-The Definitive Guide第二版

    - **MapReduce详解** - 天气数据集分析案例 - 数据格式 - 使用Unix工具进行数据分析 - 使用Hadoop进行数据分析 - Map和Reduce概念 - Java MapReduce编程模型 - 扩展性讨论 - 数据流处理 - Combiner函数的...

    Hadoop权威指南第三版

    #### 二、MapReduce详解 - **MapReduce概念**: MapReduce是一种编程模型,用于处理和生成大数据集。它通过将任务分解为两个阶段(Map和Reduce)来实现分布式计算。本书详细解释了MapReduce的工作原理及其应用场景。...

    hadoop笔记.zip

    二、MapReduce详解 1. MapReduce编程模型:由“Map”和“Reduce”两个阶段组成。Map阶段将输入数据拆分为键值对,进行局部处理;Reduce阶段则将Map的输出聚合,处理全局信息。 2. JobTracker与TaskTracker:在旧版...

Global site tag (gtag.js) - Google Analytics