Yarn 概述
Yarn是一个资源调度平台 , 负责为运算进程提供服务器运算资源
Yarn上可以运行MapReduce、Storm、tez、Spark、Flink等分布式运算进程
Yarn的运行流程
- client向yarn提交job , 首先找到ResourceManager分配资源
- ResourceManager开启一个Container , 在Container中运行一个Application Manager
- Aplication Manager找到一台NodeManager启动Application Master
- Application Master向Application Manager申请计算任务所需资源
- Resource Scheduler将资源封装发给Application Master
- Application Master将获取到的资源分配给各个NodeManager
- 各个NodeManager得到任务和资源开始执行计算任务
- 计算任务执行结束后 , 将执行结果反馈给Application Master
- Application Master将任务执行的结果反馈给Application Manager
Yarn的几个概念
Yarn不知道用户提交的进程如何运行的
Yarn只提供运算资源的调度(运算进程向Yarn申请资源 , Yarn负责分配)
Yarn的主管角色叫ResourceManager
Yarn中具体提供运算资源的角色叫NodeManager
Yarn可以作为一个通用的资源调度平台 , 企业中以前存在的各种运算集群都可以集成在一个物理集群上 , 提高资源利用率
Container
Container是Yarn中的抽象资源 , 它封装了某个节点上的多维度资源 , 如内存、CPU、磁盘、网络等 , 当Resource Scheduler为Application Master返回的资源就是使用Container表示的
Yarn会为每一个任务分配一个Container , 该任务只能使用这个Container中的资源
Yarn内存管理
Yarn允许用户配置每个节点上的可用物理内存(非硬件物理内存 , 因为其它应用可能占用一部分内存)
总结
Yarn主要职责就是管理每个节点用户给与的CPU和内存资源