一、YARN基本架构

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

二、YARN基本组成结构

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

YARN 运行的基本架构如下图:

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

1. ResourceManager(MR)

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

1) 调度器

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

2) 应用程序管理器

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

2. ApplicationMaster(AM)

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

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

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

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

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

当前YARN 自带了两个AM实现,一个是用于演示AM编写方法的实例程序distributed shell,它可以申请一定数目的Container以并行运行一个 Shell命令或者Shell脚本;另一个是运行MapReduce应用程序的AM—MRAppMaster。此外,一些其 他的计算框架对应的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进行资源隔离。

5. YARN 工作流程

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

第一个阶段是启动ApplicationMaster;

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

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注销并关闭自己。

转载于:https://www.cnblogs.com/yyy-blog/p/6939861.html

Hadoop-Yarn-框架原理及运作机制相关推荐

  1. 大数据-HADOOP高可用、联邦机制- 学习笔记 -BH4

    HADOOP高可用.联邦机制 正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 HA的运作机制 hadoop-HA集群运作机制介绍 所谓HA,即高可用(7*24小时不中断服务),实 ...

  2. Hadoop Yarn内存使用优化配置

    第一部分Hadoop Yarn内存使用优化配置 在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduc ...

  3. Yarn 内存分配管理机制及相关参数配置

    理解Yarn的内存管理与分配机制,对于我们搭建.部署集群,开发维护应用都是尤为重要的,对于这方面我做了一些调研供大家参考. 一.相关配置情况 关于Yarn内存分配与管理,主要涉及到了ResourceM ...

  4. Hadoop Yarn配置参数整理(非常全面)

    RM与NM相关参数 ResourceManager 参数名称 作用 默认值 yarn.resourcemanager.address ResourceManager 对客户端暴露的地址.客户端通过该地 ...

  5. Hadoop——Yarn(4)

    Hadoop--Yarn(4) 文章目录 1.Yarn基础架构 2.Yarn工作机制 3.作业提交全过程 4.调度器和调度算法 4.1先进先出调度器(FIFO) 4.2容量调度器(Capacity S ...

  6. 基于32位版CentOS6配置符合HA模式的CDH5.7.0的Hadoop+Yarn+HBase集群

    本文参考资料来源: 1,Hadoop完全分布式 -- HA配置 - WarmthYan - CSDN博客  https://blog.csdn.net/qq_33187206/article/deta ...

  7. Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数

    首先在yarn-site.xml中,将配置参数yarn.resourcemanager.scheduler.class设置为org.apache.hadoop.yarn.server.resource ...

  8. Apache Hadoop YARN:另一个资源协调者

    文章目录 摘要 1. 引言 2. 历史和基本原理 2.1 专用集群的时代 2.2 Hadoop on Demand的缺点 2.3 共享集群 3. 架构 3.1 概述 3.2 Resource Mana ...

  9. Hadoop YARN ResourceManager未授权访问漏洞

    文章目录 一.介绍 1.1 简介 1.2 漏洞成因 二.模拟环境 三.信息收集 四.攻击方法 五.漏洞防御 一.介绍 1.1 简介   Hadoop作为一个分布式计算应用程序框架,种类功能繁多,各种组 ...

  10. Hadoop YARN学习之Hadoop框架演进历史简述

    Hadoop YARN学习之Hadoop框架演进历史简述(1) 1. Hadoop在其发展的过程中经历了多个阶段: 阶段0:Ad Hoc集群时代 标志着Hadoop的起源,集群以Ad Hoc.单用户方 ...

最新文章

  1. 阿里面试题:分库分表无限扩容后的瓶颈以及解决方案
  2. 吴恩达:数据集的规模和学习机制都很重要!
  3. centos安装mysql 简书_在centos上安装mysql
  4. css float(脱离正常流:向左/右浮动直到父元素/另一float, 不占空间)
  5. c语言输入若干数输出最小值循环结构,C语言上机150道题
  6. java 方法注解_使用Java注解不正确的方法
  7. 每日站立会议个人博客二
  8. java 正则表达式的使用
  9. linux 别名,Linux中的别名就这么简单,如何使用和创建永久别名?
  10. vant 动态 粘性布局_CSS Viewport 单位,很多人还不知道使用它来快速布局
  11. java列表展开折叠,jQuery Datatables rowGroup折叠/展开
  12. C++基础::函数、类、类型所在的头文件 接口的介绍
  13. jsp table 中多出行数据_数据分析 | 如何基于高斯曲线拟合15分钟生活圈距离衰减规律...
  14. Centos7 卸载自带的OpenJDK
  15. 你知道数字图像处理的经典Lenna图背后的故事吗
  16. 【pytorch】Conv2d()里面的参数bias什么时候加,什么时候不加?
  17. Kettle Spoon字段拆分
  18. 请详细分析商品期货最近走势( 2016-11-29)
  19. 计算机上安装了更新ie版本,电脑XP系统安装不了ie提示“安装了更新的Internet Explorer版本”的解决方法...
  20. 虚幻引擎(12)-游戏界面

热门文章

  1. 在linux查看内存的大小
  2. 【Win 10 应用开发】文件读写的三种方案
  3. mysql校对规则设计编码命令
  4. 项目开发--------XMPP即时通讯
  5. 在线版本powerbi的使用!开启您的商业智能!
  6. valid, satisfiable, unsatisfiable的例子
  7. UNITY 画布的粗浅理解
  8. UNITY Destroy()和DestroyImadiate()都不会立即释放对象内存
  9. php使用swoole的应用场景
  10. Tomcat正常启动,一访问就报错