hadoop-yarn启动流程分析

Hadoop YARN启动流程

  • 一 YARN的启动流程 spacer.gif

  • wKiom1YFDJbjpLIQAAHB6EGisFk617.jpg
    YARN 启动流程 
    1.提交应用及其使用到的资源 用户向YARN中(RM)提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。客户端将应用程序所需的文件资源(外部字典、JAR包、二进制文件等)提交到 HDFS. 
    2.启动ApplicationMaster,  ResourceManager为该应用程序分配第一个Container(容器),并与对应的NodeManager通信,要求它在这个Container中启动应用程序的ApplicationMaster。ApplicationMaster与ResouceManager通信,以请求和获取资源。ApplicationMaster获取到资源后,与对应的NodeManager通信以启动任务。如果该应用程序第一次在给节点上启动任务,则NodeManager首先从HDFS上下载文件缓存到本地,然后启动该任务。 
    注:分布式缓存并不是将文件缓存到集群中各个结点的内存中,而是将文件换到各个结点的磁盘上,以便执行任务时候直接从本地磁盘上读取文件。 
    3.注册应用   ApplicationMaster首先向ResourceManager注册,表明自己启动成功,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤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、端口号等信息汇报给它。 4.AM运行过程中,周期性地向ApplicationMaserService回报心跳信息(信息中包含想要申请的资源描述)。 5. ApplicationMasterService每次收到ApplicationMaster心跳信息好后,将通知AMLivelinessMonitor更新应用程序的最新回报心跳的时间。 6.应用程序运行完成后,AM向AMService发送请求,注销自己。 7.AMService收到注销请求后,标注应用程序运行状态完成,同时通知AMLivelinessMonitor移除对它的心跳监控。 
    三 小结
    当用户向YARN中提交一个应用程序后,YARN将分两个阶段运行该应用程序:第一个阶段是启动 ApplicationMaster;第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行完成 


你可能感兴趣的:(hadoop-yarn启动流程分析)