Yarn 工作流
你的项目在引入了包管理器的同时,也引入了一套新的围绕着依赖项开发的工作流程。Yarn尽力不改变你的工作流程,并使流程中的每一步都简单明了。
关于基本工作流你应该知道几个简单的事:
创建新项目
/更新/依赖
安装/重装你的依赖
引入版本控制系统(例如 git)
持续集成
当给Yarn提交了应用程序后,Yarn的主要工作流程如下图:
Yarn流程主要分为以下8个步骤:
向Yarn提交应用程序,其中程序、相关、启动ApplicationMaster命令、ApplicationMaster程序等。
ResourceManager为该应用程序分配第Container,并且与Container所在的NodeManager通信,并且要求该NodeManager个Container中启动应用程序对应的ApplicationMaster。
ApplicationMaster首先会向ResourceManager,这样才可以直接通过ResourceManager查看到应用程序的运行状态,然后它为准备为该应用程序的各个任务申请资源,并监控它们的运行状态直到运行结束,即重复后面4~7步骤。
ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。
一旦ApplicationMaster申请到资源后,便会与申请到的Container所对应的NodeManager进行通信,并且要求它在该Container中启动任务。
任务启动。NodeManager为要启动的任务配置好运行环境,环境变量、、二进制程序等,并且将启动命令写在脚本里,通过该脚本运行任务。
各个任务通过RPC协议向其对应的ApplicationMaster汇报自己的运行状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以再任务运行失败时重启任务。
应用程序运行完毕后,其对应的ApplicationMaster会向ResourceManager通信,要求注销和自己。
这个需要注意的是在整个工作流程当中,ResourceManager和NodeManager都是通过心跳保持联系的,NodeManager会通过心跳信息向ResourceManager汇报自己所在节点的资源使用情况。