(1)应用程序向yarn提出申请
(2)yarn请求namenode 上的node manager 创建一个application master 实例
(3)新的application master 在yarn 上注册
(4)application master 访问namenode节点,得到应用程序需要的文件,数据块的名字和具体位置,计算出整个应用程序需要的处理资源。
(5)application master 从yarn上申请所需的资源
(6)yarn接受资源申请,把这个申请加入申请队列
(7)当application master申请的资源可以被使用时,yarn批准application master实例在指定的数据节点上运行。
(8)application master向namenode节点发送一个CLC(容器启动上下文,包括应用程序运行时所需的环境变量、所需的本地资源、命令行参数等)
(9)namenode节点接受申请,并创建一个容器
(10)当容器的进程开始运行时,应用程序就开始运行了
(11)yarn在整个应用程序的运行过程中要保证所有的资源是可用的,并且如果优先级有变化,yarn会随时中断应用程序的运行。
(12)当所有的任务完成后,application master 把结果发送给应用程序,并解除在yarn上的注册。