一、是什么

yarn是资源管理与调度平台。 Yet Another Resource Negotiator 双层调度架构

hadoop 1.x 时,使用 JobTracker 管理资源,耦合性较高(资源调度和应用程序管理功能集中在单一进程)

hadoop 2.x 时,使用 Yarn

二、基本结构

YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等组件构成。 ResourceManager:总资源管理 NodeManager:节点资源管理 ApplicationMaster:任务管理 Container:容器

三、特点

资源管理与计算框架解耦 设计

避免单点故障

四、运行流程

Yarn - 图1

详解:

1) 用户向YARN中提交应用程序/作业,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

  1. 2) ResourceManager为作业分配第一个Container,并与对应的NodeManager通信,要求它在这个Container中启动该作业的ApplicationMaster
  2. 3) NodeManager启动一个Container运行ApplicationMaster
  3. 4) ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查询该作业的运行状态;然后它将为各个任务申请资源并监控任务的运行状态。
  4. 如果Container没有完全申请到位,则会先使用已经分配到位的部分Container资源进行后续的第567步骤,其余Container部分由ApplicationMaster采用轮询的方式通过RPC请求向ResourceManager申请和领取资源,直到全部资源分配到位。
  5. 5) 一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。
  6. 6) NodeManager执行ApplicationMaster发送的命令,启动Container任务。
  7. 7)各个Container通过RPCApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。
  8. 在作业运行过程中,用户可以随时通过RPCApplicationMaster查询作业当前运行状态。
  9. 8) 作业完成后,ApplicationMasterResourceManager申请注销并关闭自己。

注:rpc Remote procedure call 远程过程调用 简单讲:跨机器的通信均是 rpc 通信。rpc 的实现有 socket,resful,tcp IP 等 这里一般通过 socket 调用

1~4 作业提交阶段

5~8 作业初始化阶段

9~10 任务分配阶段

10~14 任务运行阶段

15:作业完成阶段

Yarn - 图2

五、常用调度策略

1、先进先出调度器(FIFO)

2、容量调度器(Capacity Scheduler)

3、公平调度器(Fair Scheduler)