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

Hadoop Yarn 框架原理及运作机制

 
阅读更多

1.1 YARN 基本架构

YARN是Hadoop 2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序特有的ApplicationMaster。

其中ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理。

 

1.2 YARN基本组成结构

YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动可以占用一定资源的任务。由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会相互影响。在本小节中,我们将对YARN的基本组成结构进行介绍。

图2-9描述了YARN的基本组成结构,YARN主要由ResourceManager、NodeManager、ApplicationMaster(图中给出了MapReduce和MPI两种计算框架的ApplicationMaster,分别为MR AppMstr和MPI AppMstr)和Container等几个组件构成。

 

 

1.ResourceManager(RM)

RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。

(1)调度器

调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。

需要注意的是,该调度器是一个“纯调度器”,它不再从事任何与具体应用程序相关的工作,比如不负责监控或者跟踪应用的执行状态等,也不负责重新启动因应用执行失败或者硬件故障而产生的失败任务,这些均交由应用程序相关的ApplicationMaster完成。调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位用一个抽象概念“资源容器”(Resource Container,简称Container)表示,Container是一个动态资源分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量。此外,该调度器是一个可插拔的组件,用户可根据自己的需要设计新的调度器,YARN提供了多种直接可用的调度器,比如Fair Scheduler和Capacity Scheduler等。

 

(2) 应用程序管理器

应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。

 

2. ApplicationMaster(AM)

用户提交的每个应用程序均包含1个AM,主要功能包括:

与RM调度器协商以获取资源(用Container表示);

将得到的任务进一步分配给内部的任务;

与NM通信以启动/停止任务;

监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

当前YARN自带了两个AM实现,一个是用于演示AM编写方法的实例程序distributedshell,它可以申请一定数目的Container以并行运行一个Shell命令或者Shell脚本;另一个是运行MapReduce应用程序的AM—MRAppMaster,我们将在第8章对其进行介绍。此外,一些其他的计算框架对应的AM正在开发中,比如Open MPI、Spark等。

3. NodeManager(NM)

NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动/停止等各种请求

4. Container

Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。

需要注意的是,Container不同于MRv1中的slot,它是一个动态资源划分单位,是根据应用程序的需求动态生成的。截至本书完成时,YARN仅支持CPU和内存两种资源,且使用了轻量级资源隔离机制Cgroups进行资源隔离。

 

1.3  YARN工作流程

当用户向YARN中提交一个应用程序后,YARN将分两个阶段运行该应用程序:

第一个阶段是启动ApplicationMaster;

第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行完成。

如图2-11所示,YARN的工作流程分为以下几个步骤:

     

 

步骤1 用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

步骤2 ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager通信,要求它在这个Container中启动应用程序的ApplicationMaster。

步骤3 ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。

步骤4 ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。

步骤5 一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。

步骤6 NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。

步骤7 各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。

     在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。

 

步骤8 应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。

 

1.4 多角度理解YARN

可将YARN看做一个云操作系统,它负责为应用程序启动ApplicationMaster(相当于主线程),然后再由ApplicationMaster负责数据切分、任务分配、启动和监控等工作,而由ApplicationMaster启动的各个Task(相当于子线程)仅负责自己的计算任务。当所有任务计算完成后,ApplicationMaster认为应用程序运行完成,然后退出。

   

分享到:
评论

相关推荐

    03_Hadoop MapReduce与Hadoop YARN.zip

    在大数据处理领域,Hadoop MapReduce和YARN是两个至关重要的组件,它们构成了Apache Hadoop生态系统的核心部分。...理解这两者的运作机制对于深入掌握Hadoop生态系统至关重要,也是开发和运维大数据应用的基础。

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

    总的来说,《Hadoop技术内幕:深入Yarn架构设计与实现原理》这本书全面介绍了YARN的设计理念、工作原理以及在实际环境中的应用和优化,对于理解Hadoop大数据处理平台的运作机制和提升大数据处理能力具有重要意义。

    Hadoop技术内幕:深入解析YARN架构设计与实现原理-高清文字版.pdf

    《Hadoop技术内幕:深入解析YARN架构设计与实现原理》是一本专注于Hadoop生态系统中的核心组件YARN(Yet Another Resource Negotiator)的专著。这本书以高清文字版的形式提供了对YARN的深入理解,旨在帮助读者掌握...

    hadoop技术内幕三件套

    通过这三本书的学习,读者不仅可以掌握Hadoop的基础知识,还能深入了解其内部运作机制,从而更好地设计、部署和维护大规模的数据处理集群。对于那些希望在大数据领域深化技术能力的人来说,这套书籍无疑是宝贵的资源...

    hadoop2.7.2源码包

    源码包提供了一窥Hadoop内部运作机制的机会,对于开发者、研究者以及想要深入理解Hadoop工作原理的人来说极具价值。在Hadoop 2.7.2的源码中,我们可以探索以下几个关键知识点: 1. **HDFS(Hadoop Distributed File...

    《Hadoop权威指南(第四版)》中文PDF+英文PDF+源代码.rar

    源代码部分则是实践性的补充,读者可以下载并运行这些代码,亲手体验Hadoop的运作过程。通过实际操作,读者可以更直观地理解书中的理论知识,提高解决问题的能力。 本书涵盖的知识点广泛,包括但不限于: 1. Hadoop...

    实战hadoop中的源码

    总的来说,《实战Hadoop中的源码》是一本深入理解Hadoop内在运作原理的宝贵教材,通过源码学习,读者不仅可以掌握Hadoop的基本操作,还能具备解决复杂问题和优化系统的能力,为从事云计算和大数据相关工作打下坚实...

    hadoop-2.7.3源码和安装包.zip

    1. **Hadoop模块结构**:Hadoop主要分为Hadoop Common、Hadoop HDFS(分布式文件系统)、Hadoop YARN(资源调度器)和Hadoop MapReduce(并行计算框架)四大模块。源码中,你可以看到每个模块的组织结构,了解它们...

    Hadoop单节点部署指导

    - **掌握Hadoop核心技术**:包括HDFS、MapReduce等关键组件的具体运作机制。 #### 二、实验原理概述 - **Hadoop分布式计算平台**:由Apache基金会开发的开源项目,主要包含HDFS和MapReduce两大核心组件。 - **HDFS...

    hadoop jar合集

    Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。这个“hadoop jar合集”包含的四个关键JAR文件,分别是hadoop-hdfs-2.7.3.jar、...

    hadoop2.7.3的源码包

    Hadoop 2.7.3 是一个开源框架,主要用于分布式存储和计算,是大数据处理领域的重要组成部分。这个源码包提供了Hadoop的核心组件,包括HDFS(Hadoop Distributed File System)、MapReduce以及YARN(Yet Another ...

    Hadoop源码分析完整版

    在IT行业中,Hadoop是一个广泛使用的开源框架,主要用于大数据处理和分布式存储。它是由Apache软件基金会维护,且在...通过学习和研究,你将能够构建起对Hadoop内在运作机制的全面理解,从而在大数据领域更加游刃有余。

    Hadoop深入浅出分享资料

    在IT行业中,Hadoop是一个广泛使用的开源框架,用于处理和存储海量数据。它以其分布式文件系统(HDFS)和MapReduce计算模型为核心,为大数据处理提供了高效、可靠且可扩展的解决方案。本资料集合深入浅出地介绍了...

    hadoop源码下载

    源码下载是理解Hadoop工作原理、进行二次开发或优化的重要步骤。本篇文章将详细探讨Hadoop源码的相关知识,以及如何获取和解析Hadoop的源代码。 Hadoop的核心组件主要包括两个主要部分:Hadoop Distributed File ...

    hadoop-3.3.1-aarch64.tar.gz

    在大数据处理和分析的背景下,理解Hadoop的运作原理和使用方法是至关重要的,这包括数据的分布式存储、并行计算模型、任务调度以及错误恢复机制等。Hadoop还常常与其他大数据工具(如Spark、Hive、Pig等)结合使用,...

    Hadoop入门手册

    3. **HDFS**:详细讲解Hadoop的分布式文件系统,包括HDFS的工作原理、数据块的概念、副本策略、容错机制以及如何进行文件读写操作。 4. **MapReduce**:MapReduce是Hadoop的主要计算模型,它将大型任务分解为多个小...

    hadoop权威指南第三版(原版)和源码

    源码则提供了书中理论的实践支持,使读者能够更直观地理解Hadoop的运作机制。 一、Hadoop基础 Hadoop是一个开源的分布式计算框架,由Apache基金会开发,旨在处理和存储海量数据。它主要由两个核心组件构成:Hadoop...

    hadoop权威指南第4版(中文)

    在《Hadoop权威指南》第四版中,读者将了解到HDFS的详细运作机制,包括命名节点(Namenode)和数据节点(DataNode)的角色,以及如何进行数据的读写操作。此外,还会讲解HDFS的故障恢复策略,如检查点节点(Checkpoint ...

    Hadoop平台搭建方案_hadoop_源码.zip

    在IT行业中,Hadoop是一个...这个压缩包提供的方案将指导你完成这一过程,同时源码分析能让你更深入地了解Hadoop的内在运作机制。无论是为了学习大数据处理,还是为了实际项目部署,这份资源都将极大地推动你的进步。

    《Hadoop实战》源码

    通过深入研究这份源码,开发者可以了解到Hadoop内部的运作机制,学习如何编写MapReduce作业,理解YARN如何协调资源,以及如何根据具体需求调整Hadoop集群的配置。这对于从事大数据开发、数据分析或者希望提升Hadoop...

Global site tag (gtag.js) - Google Analytics