一、是什么
yarn是资源管理与调度平台。 Yet Another Resource Negotiator 双层调度架构
hadoop 1.x 时,使用 JobTracker 管理资源,耦合性较高(资源调度和应用程序管理功能集中在单一进程)
hadoop 2.x 时,使用 Yarn
二、基本结构
YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等组件构成。 ResourceManager:总资源管理 NodeManager:节点资源管理 ApplicationMaster:任务管理 Container:容器三、特点
资源管理与计算框架解耦 设计
避免单点故障
四、运行流程
详解:
1) 用户向YARN中提交应用程序/作业,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
2) ResourceManager为作业分配第一个Container,并与对应的NodeManager通信,要求它在这个Container中启动该作业的ApplicationMaster。
3) NodeManager启动一个Container运行ApplicationMaster。
4) ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查询该作业的运行状态;然后它将为各个任务申请资源并监控任务的运行状态。
如果Container没有完全申请到位,则会先使用已经分配到位的部分Container资源进行后续的第5、6、7步骤,其余Container部分由ApplicationMaster采用轮询的方式通过RPC请求向ResourceManager申请和领取资源,直到全部资源分配到位。
5) 一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。
6) NodeManager执行ApplicationMaster发送的命令,启动Container任务。
7)各个Container通过RPC向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。
在作业运行过程中,用户可以随时通过RPC向ApplicationMaster查询作业当前运行状态。
8) 作业完成后,ApplicationMaster向ResourceManager申请注销并关闭自己。
注:rpc Remote procedure call 远程过程调用 简单讲:跨机器的通信均是 rpc 通信。rpc 的实现有 socket,resful,tcp IP 等 这里一般通过 socket 调用
1~4 作业提交阶段
5~8 作业初始化阶段
9~10 任务分配阶段
10~14 任务运行阶段
15:作业完成阶段
五、常用调度策略
1、先进先出调度器(FIFO)
2、容量调度器(Capacity Scheduler)
3、公平调度器(Fair Scheduler)