说明
yarn已经成为 通用的 资源管理、任务调度 平台,不止可以运行 MapReduce,还可以运行 spark、flink等其他程序
官网:
https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html
步骤
步骤1, 用户向 Yarn
提交应用程序,其中包括用户程序、相关文件、启动ApplicationMaster命令、ApplicationMaster程序等。
步骤2, ResourceManager
为该应用程序分配第一个Container
,并且与 Container
所在的 NodeManager
通信,并且要求该 NodeManager
在这个 Container
中启动应用程序对应的 ApplicationMaster
。
步骤3, ApplicationMaster
首先会向 ResourceManager
注册,这样用户才可以直接通过 ResourceManager
查看到应用程序的运行状态,然后它为准备为该应用程序的各个任务申请资源,并监控它们的运行状态直到运行结束,即重复后面 4~7
步骤。
步骤4, ApplicationMaster
采用轮询的方式通过RPC协议向ResourceManager
申请和领取资源。
步骤5,一旦 ApplicationMaster
申请到资源后,便会与申请到的 Container
所对应的 NodeManager
进行通信,并且要求它在该 Container
中启动任务。
步骤6,任务启动。NodeManager
为要启动的任务配置好运行环境,包括环境变量、JAR包、二进制程序等,并且将启动命令写在一个脚本里,通过该脚本运行任务。
步骤7,各个任务通过RPC协议向其对应的 ApplicationMaster
汇报自己的运行状态和进度,以让 ApplicationMaster
随时掌握各个任务的运行状态,从而可以再任务运行失败时重启任务。
步骤8, 应用程序运行完毕后,其对应的 ApplicationMaster
会向 ResourceManager
通信,要求注销和关闭自己。