Yarn 工作流

Yarn 工作流

你的项目在引入了包管理器的同时,也引入了一套新的围绕着依赖项开发的工作流程。Yarn尽力不改变你的工作流程,并使流程中的每一步都简单明了。

关于基本工作流你应该知道几个简单的事:

  1. 创建一个新项目

  2. 增加/更新/删除依赖

  3. 安装/重装你的依赖

  4. 引入版本控制系统(例如 git)

  5. 持续集成

Yarn 工作流程图

 当用户给Yarn提交了一个应用程序后,Yarn的主要工作流程如下图:

Yarn 工作流

Yarn流程主要分为以下8个步骤:

步骤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通信,要求注销和关闭自己。 

这个需要注意的是在整个工作流程当中,ResourceManager和NodeManager都是通过心跳保持联系的,NodeManager会通过心跳信息向ResourceManager汇报自己所在节点的资源使用情况。