Hadoop - YARN 启动流程

   一  YARN的启动流程  



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

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创建应用程序,为它申请资源,并监控它的整个执行过程。直到运

行完毕

时间: 2024-10-12 19:07:41

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

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

此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Flink on yarn的启动流程可以参见前面的文章 Flink on Yarn启动流程,下面主要是从源码角度看下这个实现,可能有的地方理解有误,请给予指正,多谢. --> 1.命令行启动yarn session bin/yarn-session.sh -n 3 -jm 1024 -nm 1024 -st我们去看下启动脚本   $JAVA_RUN $JVM_ARGS -classpath "$CC_

Flink on Yarn模式启动流程分析

此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Flink On Yarn 架构 Paste_Image.png 前提条件首先需要配置YARN_CONF_DIR, HADOOP_CONF_DIR ,HADOOP_CONF_PATH其中一个用来确保Flink能够访问HDFS和Yarn的RM. 主要启动流程 1. 启动进程 首先我们通过下面的命令行启动flink on yarn的集群bin/yarn-session.sh -n 3 -jm 1024 -nm

YARN Container 启动流程分析

YARN Container 启动流程分析 本文档从代码出发,分析了 YARN 中 Container 启动的整个过程,希望给出这个过程的一个整体的概念. 文档分为两个部分:第一部分是全局,从头至尾地把 Container 启动的整个流程串联起来:第二部分是细节,简要分析了 Container 启动流程中涉及到的服务.接口和类. 注意: 基于 hadoop-2.6.0 的代码 只写了与 Container 启动相关的逻辑,并且还大量忽略了很多细节,目的是为了得到一个整体的概念. 为了让分析更具体

Hadoop YARN介绍

YARN产生背景 MRv1的局限 YARN是在MRv1基础上演化而来的,它克服了MRv1中的各种局限性.在正式介绍YARN之前,先了解下MRv1的一些局限性,主要有以下几个方面: 扩展性差.在MRv1中,JobTracker同时兼备了资源管理和作业控制两个功能,这成为系统的一个最大瓶颈,严重制约了Hadoop集群扩展性. 可靠性差.MRv1采用了master/slave结构,其中,master存在单点故障问题,一旦它出现故障将导致整个集群不可用. 资源利用率低.MRv1采用了基于槽位的资源分配模

# Apache Hadoop Yarn: Yet Another Resource Negotiator论文解读

纯属云平台管理学习菜鸟的笔记,参照许多大牛的博客,如有侵权,请联系,立刻删除. Abstract 1) tight coupling of a specific programming model with the re- source management infrastructure, forcing developers to abuse the MapReduce programming model, and 2) centralized handling of jobs' contro

Hadoop -YARN 应用程序设计概述

一概述 应用程序是用户编写的处理数据的统称,它从YARN中申请资源完成自己的计算任务.YARN自身对应用程序类型没有任何限制,它可以是处理短类型任务的MapReduce作业,也可以是部署长时间运行的服务的应用程序.应用程序可以向YARN申请资源完成各类计算任务. 在YARN上开发一个应用程序,通常而言,需要开发两个组件,分别是客户端和ApplicationMaster,其中客户端主要作用是将应用程序提交到YARN上,并与YARN 和Application Master进行交互,查询应用程序的状态

理解Hadoop YARN架构

1. 介绍 YARN(Yet Another Resource Negotiator)是一个通用的资源管理平台,可为各类计算框架提供资源的管理和调度. 其核心出发点是为了分离资源管理与作业调度/监控,实现分离的做法是拥有一个全局的资源管理器(ResourceManager,RM),以及每个应用程序对应一个的应用管理器(ApplicationMaster,AM),应用程序由一个作业(Job)或者Job的有向无环图(DAG)组成. YARN可以将多种计算框架(如离线处理MapReduce.在线处理的

JStorm之NimbusServer启动流程

NimbusServer相当于hadoop里的JobTracker或yarn里的ResourceManager,在集群中属于首脑地位,负责分发任务,监控集群状态,与supervisor的通信主要通过Zookeeper.nimbus在启动过程中会做以下工作,以保证集群稳定运行: 1.清理无效topology 2.建立zk连接并创建相应znode 3.启动监控线程 4.启动httpserver 启动主函数如下: public static void main(String[] args) throw

Apache Hadoop YARN

1. Yarn通俗介绍Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率.资源统一管理和数据共享等方面带来了巨大好处.可以把yarn理解为相当于一个分布式的操作系统平台,而mapreduce等运算程序则相当于运行于操作系统之上的应用程序,Yarn为这些程序提供运算所需的资源(内存.cpu).l