赞
踩
YARN是一个统一的资源调度框架,它可以运行很多种应用程序,如MapReduce、spark、Flink等,接下来以MapReduce为例详细介绍作业在YARN中的工作流程。
MapReduce on YARN的工作流程如图:
①用户向资源管理器(ResourceManager)提交作业,作业包括MapReduce应用程序管理器(ApplicationMaster)、启动ApplicationMaster的程序和用户自己编写的MapReduce程序。用户提交的所有作业都由全局应用程序管理器(ApplicationManager)管理。
②ResourceManager为该应用程序分配第一个容器(Container),并与对应的节点管理器(NodeManager),要求它在这个Container中启动ApplicationMaster。
③ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它们的运行状态,直到任务结束,即要重复步骤④~⑦。
④ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。
⑤一旦ApplicationMaster申请到资源,便与对应的NodeManager通信,要求启动该任务。
⑥NodeManager为任务设置好运行环境,包括环境变量、jar包、二进制程序等,然后将任务启动命令写到另一个脚本中,并通过运行该脚本启动任务。
⑦各个任务通过PRC协议向ApplicationMaster汇报自己的状态和进度,ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可以随时通过PRC协议向ApplicationMaster查询应用程序的当前运行状态。
⑧应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭进程。
整个应用程序运行过程中,也可以通过PRC协议向REsourceManager查询应用程序当前的运行状态,在YARN的Web界面上也可以看到整个作业的运行状态。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。