一  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. 343 Integer Break 整数拆分

    给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积.例如,给定 n = 2,返回1(2 = 1 + 1):给定 n = 10,返回36(10 = 3 ...

  2. c的二级指针

    ----"c 语言的精华在于指针的灵活性.学好指针的目的在于尽可能少的使用指针." 在敲binary search tree(二叉查找树),遇到了问题.在删除的时候,如果删除的是r ...

  3. 记Spring下autowire为name时的一个现象

    当autowire为byname时,假如有一个名为“user”的component,恰巧还有另一个属性为“user”,它的set方法为setUser(User user),Spring会强行把comp ...

  4. Android RecyclerView利用Glide加载大量图片into(Target)导致OOM异常

    学过android的人应该都知道Glide是一个无比强大的图片加载库,它内部已经提供了很好的缓存机制供我们选择,我们只需一个参数调用即可(DiskCacheStrategy()),而不必像Univer ...

  5. Android 微信分享不出去?四步搞定!

    现在做的项目中集成了友盟分享,产品要求集成微信.朋友圈.QQ.QQ空间.短信这几个分享平台.按照友盟的文档集成一切都很顺利,集成成功以后测试QQ.QQ空间.短信都没有问题,唯独微信和朋友圈一直分享不出 ...

  6. Android基础TOP2_1:输出系统时间

    Activity: <TextView android:id="@+id/tv" android:layout_width="wrap_content" ...

  7. 学习随笔-Java WebService

    webService 可以将应用程序转换成网络应用程序.是简单的可共同操作的消息收发框架. 基本的webService平台是 XML 和 HTTP. HTTP 是最常用的互联网协议: XML 是 we ...

  8. linux启动时开启screen

    编辑/etc/rc.local 添加 su - ubuntu -c 'screen -dmS ss zserver -p /etc/config'

  9. GNSS数据下载网站

    Bernese 数据表文件下载 rinex文件下载 ftp://nfs.kasi.re.kr DCB.ION文件ftp://ftp.unibe.ch/AIUB/CODE/ 下载5.0更新文件 ftp: ...

  10. block要用copy修饰,还是用strong

    栈区与堆区 block本身是像对象一样可以retain,和release.但是,block在创建的时候,它的内存是分配在栈(stack)上,而不是在堆(heap)上.他本身的作于域是属于创建时候的作用 ...