YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManager启动可以占用一定资源的任务。

   Hadoop2.0 YARN包含以下实体,可以看图:

  

ResourceManager(RM):全局资源管理器,负责整个系统的资源管理和分配。

  由连个组件组成:

    调度器(Scheduler)

        调度器根据容量,队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用。这里的调度器是一个“纯       调度器”,因为它不再负责监控或者跟踪应用的执行状态等,此外,他也不负责重新启动因应用执行失败或者硬件故障而产生的失败任务。调度器仅根据各个应用的资源     需求进行调度,这是通过抽象概念“资源容器”完成的,资源容器(Resource Container)将内存,CPU,磁盘,网络等资源封装在一起,从而限定每个任务使用的资源     量。

    应用管理器(ApplicationsManager,ASM)

    ASM主要负责接收作业,协商获取第一个容器用于执行AM和提供重启失败AM container的服务

       ASM负责管理系统中所有应用程序的AM,正如上一节所述,ASM负责启动AM,监控AM的运行状态,在AM失败时对其进行重启等。

为了完成该功能,ASM主要有以下几个组件:

(1)SchedulerNegotiator:与调度器协商容器资源,并返回给AM

(2)AMContainerManager:告知NM,启动或者停止某个AM的容器

(3)AMMonitor:查看AM是否活着,并在必要的时候重启AM

NodeManager(NM):每个节点上的资源和任务管理器,定时向RM汇报本节上的资源使用情况和各个Container的运行状态,接受并处理来自AM的Container启动/停止等各种请求。

ApplicationMaster(AM):用户提交每个应用程序均包含一个AM,主要功能与RM调度器协商以获取资源,进一步分配给内部的任务,与NM通信启动/停止任务,监控任务的运行状态。

   每个应用程序均会有一个AM,主要职责有:

  (1)  与调度器协商资源

  (2)  与NM合作,在合适的容器中运行对应的task,并监控这些task执行

  (3) 如果container出现故障,AM会重新向调度器申请资源

  (4)  计算应用程序所需的资源量,并转化成调度器可识别的格式(协议)

  (5)  AM出现故障后,ASM会重启它,而由AM自己从之前保存的应用程序执行状态中恢复应用程序。

    注:在MapReduce中,由于AM会定时的保存job的运行时状态,因此,当AM重启时可以恢复对应的job,按照粒度有三种策略:

   <1>整个作业重新计算

   <2> 保存已经完成的map task和reduce task,只重新计算未完成的task

   <3> 保存task的进度,从task断点处开始计算,如:某个task完成了20%,则AM重启后,让该task从20%处开始计算。

Contanier:是YARN中资源的抽象,封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。当AM想RM申请资源时,RM为AM返回的资源便是用Container表示的。

  

  (1)  Container是YARN中资源的抽象,它封装了某个节点上一定量的资源(CPU和内存两类资源)。它跟Linux Container没有任何关系,仅仅是YARN提出的一个概念(从实现上看,可看做一个可序列化/反序列化的Java类)。

  (2)  Container由ApplicationMaster向ResourceManager申请的,由ResouceManager中的资源调度器异步分配给ApplicationMaster

  (3) Container的运行是由ApplicationMaster向资源所在的NodeManager发起的,Container运行时需提供内部执行的任务命令(可以使任何命令,比如java、Python、C++进程启动命令均可)以及该命令执行所需的环境变量和外部资源(比如词典文件、可执行文件、jar包等)。

   另外,一个应用程序所需的Container分为两大类,如下:

  (1) 运行ApplicationMaster的Container:这是由ResourceManager(向内部的资源调度器)申请和启动的,用户提交应用程序时,可指定唯一的ApplicationMaster所需的资源;

  (2) 运行各类任务的Container:这是由ApplicationMaster向ResourceManager申请的,并由ApplicationMaster与NodeManager通信以启动之。

以上两类Container可能在任意节点上,它们的位置通常而言是随机的,即ApplicationMaster可能与它管理的任务运行在一个节点上。

一个应用程序在YARN上的运行步骤 

步骤1:用户将应用程序提交到ResourceManager上;

步骤2:ResourceManager为应用程序ApplicationMaster申请资源,并与某个NodeManager通信,以启动ApplicationMaster;

步骤3:ApplicationMaster与ResourceManager通信,为内部要执行的任务申请资源,一旦得到资源后,将于NodeManager通信,以启动对应的任务。

步骤4:所有任务运行完成后,ApplicationMaster向ResourceManager注销,整个应用程序运行结束。

转载于:https://www.cnblogs.com/sy270321/p/4398703.html

hadoop2——新MapReduces——yarm详解相关推荐

  1. 苹果Ad_Hoc添加新设备UUID详解

    苹果Ad_Hoc添加新设备UUID详解 登录苹果开发者中心 选择Certificates,Identifiers&Profiles 进入 选择设备栏目 右侧为测试可用列表设备 点击新增按钮 进 ...

  2. 米家app扫描不到石头机器人_2000元档新擂主?详解石头扫地机器人 P5战力值

    原标题:2000元档新擂主?详解石头扫地机器人 P5战力值 透过这个令人不堪回首的长假,方了解自己的懒惰底线在哪,晨起的生物钟被调到了自然醒,每天饿到下午吃挂面--望着地板上日益渐厚的灰尘,悄然打起了 ...

  3. linux添加用户命令_Linux useradd命令添加新用户图文详解

    在Linux 系统中,可以使用 useradd 命令新建用户,此命令的基本格式如下: [root@localhost ~]#useradd [选项] 用户名 该命令常用的选项及各自的含义,如表 1 所 ...

  4. 如何安装新linux内核,详解Debian系统中安装Linux新内核的流程

    一直对Linux内核很有兴趣,但苦于入门不易,认真看了ldd前5章突然就来感觉了,光看不练不顶用,首先就需要环境搭建. 使用的是Debian 5.0,内核2.6.26,欲安装的新内核为2.6.28,这 ...

  5. CentOS7下用jdk1.7编译hadoop-2.7.1全过程详解

    说实话,本人编译hadoop的过程比较曲折,但收获也很多,下面系统介绍一下CentOS7下编译hadoop-2.7.1的全过程吧. 先说明,32位Linux操作系统可以直接下载编译好的hadoop使用 ...

  6. Hadoop2之NameNode HA详解

    在Hadoop1中NameNode存在一个单点故障问题,如果NameNode所在的机器发生故障,整个集群就将不可用(Hadoop1中虽然有个SecorndaryNameNode,但是它并不是NameN ...

  7. hadoop2.x下Yarn详解

    1. Yarn的介绍 YARN的基本思想是将JobTracker的两个主要功能(资源管理和 作业调度/监控)分离,主要方法是创建一个全局的ResourceManager(RM)和若干个针对应用程序的 ...

  8. 移动应用AI化成新战场?详解苹果最新Core ML模型构建基于机器学习的智能应用...

    Google刚刚息鼓,苹果又燃战火!这一战,来自移动应用的AI化之争. 近日,苹果发布专为移动端优化的Core ML后,移动开发者对此的需求到底有多强烈?去年大获成功的AI应用Prisma又能告诉我们 ...

  9. php 数组 组成新数组,PHP让数组中相同值的组组成新的数组详解

    本文主要为大家分享一篇PHP让数组中有相同值的组成新的数组实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 实例如下所示:$arr = array( 0=> ...

最新文章

  1. Datawhale组队学习周报(第038周)
  2. 小甲鱼c++源码_飞凌课堂丨OK1046A-C内存交互测试,小白也能看懂
  3. python IDE- IDLE
  4. 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) 【部分题解】
  5. 通信 / HTTP Host 请求头的作用
  6. [计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测
  7. 修改Hybris Administration console管理员默认登录密码
  8. mysql增加某人信息_mysql 增加用户
  9. 了解回归:迈向机器学习的第一步
  10. 从零开始升级基于RuleBased的聊天机器人
  11. python软件安装及设置_Python 基础知识及安装配置
  12. 添加spark.yarn.jars 解决 WARN yarn.Client: Neither spark.yarn.jars nor spark.yarn.archive is set,
  13. The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler
  14. 白帽子讲web安全之 浏览器安全
  15. 棋牌游戏开发会low吗 中国棋牌文化底蕴探究
  16. Afnetworking访问遇到3840_错误
  17. 服务器终端授权,终端服务器许可 - Windows Server | Microsoft Docs
  18. 第一课2021014615
  19. VScode如何恢复误删文件
  20. 光学镜头“后起之秀”中润光学冲刺科创板,业务总体向好但供应链隐忧值得关注...

热门文章

  1. 读MBA经历回顾(上)目的决定手段——北漂18年(48)
  2. SQL Server未将对象引用设置到对象的实例解决办法
  3. 显示GridControl的横向滚动条
  4. VMWare中Ubuntu重启后无法上网(已解决)
  5. PDF转换PPT方法讲解
  6. sklearn中Logistics Regression的coef_和intercept_的具体意义
  7. ArrayList源码扩容机制分析
  8. Windows 7定时关机命令(很实用)
  9. 想在EXCEL输入数据,单元格后面自动显示时间
  10. 上班族每天适合吃香蕉、苹果、柿子、猕猴桃、木瓜