一  YARN的启动流程          
                                                     

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmd6aGVianV0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


                                                                               YARN 启动流程

   
  1.提交应用及其使用到的资源
    用户向YARN中(RM)提交应用程序,当中包含ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。client将应用程序所需的文件资源(外部字典、JAR包、二进制文件等)提交到
HDFS.

  2.启动ApplicationMaster
      ResourceManager为该应用程序分配第一个Container。并与相应的NodeManager通信。要求它在这个Container中启动应用程序的ApplicationMaster。

ApplicationMaster与ResouceManager通信,以请求和获取资源。

ApplicationMaster获取到资源后,与相应的NodeManager通信以启动任务。

假设该应用程序第一次在给节点上启动任务,则NodeManager首先从HDFS上下载文件缓存到本地,然后启动该任务。


     注:分布式缓存并非将文件缓存到集群中各个结点的内存中,而是将文件换到各个结点的磁盘上,以便运行任务时候直接从本地磁盘上读取文件。

  3.注冊应用
   ApplicationMaster首先向ResourceManager注冊,表明自己启动成功。这样用户能够直接通过ResourceManage查看应用程序的执行状态。然后它将为各个任务申请资源,并监控它的执行状态,直到执行结束,即反复步骤4~7。


  4.为任务申请资源
   ApplicationMaster採用轮询的方式通过RPC协议向ResourceManager申请和领取资源。


   5.与NM通信启动各个任务
    一旦ApplicationMaster申请到资源后。ApplicationMaster就会将启动命令交给NodeManager,要求它启动任务。启动命令里包括了一些信息使得Container能够与Application Master进行通信。

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

  7.运行任务
     在Container内执行用户提交的代码,各个Container通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的执行状态,从而能够在任务失败时又一次启动任务。


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

  9.执行完成
     应用程序执行完毕后,ApplicationMaster向ResourceManager注销并关闭自己。

二 AM与RM的具体交互

     1.用户向YARN ResourceManager提交应用程序,RM收到提交申请后。先向资源调度器申请用以启动AM
的资源,待申请到资源后,再由ApplicationMasterLauncher与相应的NodeManager通信,从而启动应用程序的ApplicationMaster.
     2.ApplicationMaster启动完毕后,ApplicationMasterLaucher会通过事件的形式,将刚刚启动的Application Master注冊到AMLiveMonitor,以启动心跳监控。
     3.ApplicationMaster启动后,先向ApplicatinMaterService注冊。并将自己所在host、port号等信息汇报给它。

     4.AM执行过程中,周期性地向ApplicationMaserService回报心跳信息(信息中包括想要申请的资源描写叙述)。
     5. ApplicationMasterService每次收到ApplicationMaster心跳信息好后,将通知AMLivelinessMonitor更新应用程序的最新回报心跳的时间。
     6.应用程序执行完毕后,AM向AMService发送请求,注销自己。
     7.AMService收到注销请求后,标注应用程序执行状态完毕。同一时候通知AMLivelinessMonitor移除对它的心跳监控。

三 小结


      当用户向YARN中提交一个应用程序后,YARN将分两个阶段执行该应用程序:第一个阶段是启动
ApplicationMaster;第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个执行过程。直到运
行完毕

Hadoop - YARN 启动流程的更多相关文章

  1. Hadoop yarn工作流程详解

    yarn是什么?1.它是一个资源调度及提供作业运行的系统环境平台 资源:cpu.mem等 作业:map task.reduce Task yarn产生背景?它是从hadoop2.x版本才引入1.had ...

  2. Flink on Yarn模式启动流程源代码分析

    此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Flink on yarn的启动流程可以参见前面的文章 Flink on Yarn启动流程,下面主要是从源码角 ...

  3. Flink on Yarn模式启动流程分析

    此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Flink On Yarn 架构 Paste_Image.png 前提条件首先需要配置YARN_CONF_DI ...

  4. hadoop源码_hdfs启动流程_2_DataNode

    执行start-dfs.sh脚本后,集群是如何启动的? 本文阅读并注释了start-dfs脚本,以及datanode的启动主要流程流程源码. DataNode 启动流程 脚本代码分析 start-df ...

  5. hadoop源码_hdfs启动流程_3_心跳机制

    hadoop在启动namenode和datanode之后,两者之间是如何联动了?datanode如何向namenode注册?如何汇报数据?namenode又如何向datanode发送命令? 心跳机制基 ...

  6. Hadoop Yarn内存资源隔离实现原理——基于线程监控的内存隔离方案

    注:本文以hadoop-2.5.0-cdh5.3.2为例进行说明.   Hadoop Yarn的资源隔离是指为运行着不同任务的“Container”提供可独立使用的计算资源,以避免它们之间相互干扰.目 ...

  7. hadoop Yarn 编程API

    客户端编程库: 所在jar包: org.apache.hadoop.yarn.client.YarnClient 使用方法: 1 定义一个YarnClient实例: private YarnClien ...

  8. Hadoop YARN介绍

    YARN产生背景 MRv1的局限 YARN是在MRv1基础上演化而来的,它克服了MRv1中的各种局限性.在正式介绍YARN之前,先了解下MRv1的一些局限性,主要有以下几个方面: 扩展性差.在MRv1 ...

  9. hadoop yarn

    简介: 本文介绍了 Hadoop 自 0.23.0 版本后新的 map-reduce 框架(Yarn) 原理,优势,运作机制和配置方法等:着重介绍新的 yarn 框架相对于原框架的差异及改进:并通过 ...

随机推荐

  1. Zookeeper概念学习系列之zookeeper的数据模型

    1.层次化的目录结构,命名符合常规文件系统规范. 2.每个节点在zookeeper中叫做znode,并且有其有一个唯一的路径标识. 3.znode中的数据可以有多个版本,比如某一路径下存有多个数据版本 ...

  2. Extension Methods(扩展方法)

    在 OOPL 中,有静态方法.实例方法和虚方法,如下:   public sealed class String {      public static bool  IsNullOrEmpty(st ...

  3. 使用Kettle增量抽取MongoDB数据实践

    需求: 增量抽取MongoDB数据并加载到MSSQL 由于不能使用关系型数据库的自定义SQL, 所以主要遇到的问题有: 增量时间的查询和参数控制 ETL的批次信息和调用参数的写入 第一个问题的解决如下 ...

  4. JS——三个运用正则的方法

    trim().replace().search() <script> //trim();去除前后的空格 var str = " 你好 我很好! "; console.l ...

  5. 【转载】HTTP 响应头与状态码

    原文地址:https://segmentfault.com/a/1190000006689786 HTTP Response Header 响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描 ...

  6. Zabbix 默认网络发现模板修改(第三篇)

    zabbix 默认网络发现模板不能显示ip,我想让他在graph的标题上显示ip,具体要像如下效果 原文地址:http://www.cnblogs.com/caoguo/p/4977254.html ...

  7. MFC TAB控件顺序

    在MFC中添加控件后,按Ctrl+d可以改变控件TAB顺序,怕自己忘了,一个神奇的东西,记下. 关于改变Tab顺序的方法有以下几种: 方法一:在动态创建控件的时候STYLE设置成为WS_CHILD|W ...

  8. 用C#在Visual Studio写Javascript单元测试(Firefox内核)

    引用nuget包: 注意:Geckofx45 nuget包必须是最后引用,否则初始化会出错 编写JsRunner using Gecko; using System; using System.Col ...

  9. Oracle,sqlserver,mySQl的区别和联系:

    1.日期处理方式 2.对保留字和关键字的处理方式: Oracle,sqlserver,mySQl的保留字不可以用作列字段,关键字可以,但他们对关键字的处理方式又不同: Oracle:关键字作为列时:用 ...

  10. Linux - redis主从同步

    目录 Linux - redis主从同步 环境准备 配置主从同步 测试写入数据,主库写入数据,检查从库数据 手动进行主从复制故障切换 Linux - redis主从同步 原理: 从服务器向主服务器发送 ...