YARN :Yet Another Resource Negotiator(另外一种资源管理器)
YARN产生背景
- MapReduce1.x存在的问题(JobTracker是单节点)
- 资源利用率&运维成本(一种类型一个集群)
YARN架构
yarn架构设计
1
2
3
4
5mr job执行流程
mr on yarn架构
yarn架构设计
> 三个问题全部对应一个问题1 RM(ResourceManager) + N NM(NodeManager) 一主多被
ResourceManager
1
2
3
4
5- 一个集群avtive状态的RM只有一个,负责整个集群的资源管理和调度
- 处理客户端请求(启动/杀死)
- 启动/监控ApplicationMaster(一个作业对应一个AM)
- 监控NodeManager, 如果NM挂掉,告诉对应的ApplicationMaster(非次NM的AM)如果处理
- 系统的资源分配和调度NodeManager
1
2
3- 通过心跳定期向RM汇报本节点的资源使用、任务运行和Container运行情况
- 接收RM Container的启动和停止(看图AM是启动在Container上的)
- 单个节点的资源管理和任务管理AM(AplicationMaster)
1
2
3
4
5- 每一个应用/作业对应一个AM,负责应用程序的管理
- 数据的切分
- 为应用程序向RM申请资源(container),并分配给内部任务
- 与NM通信,以启停task,task是运行在container中的
- task的监控和容错
YARN - Container
vcore概念
1
2
3
4
5
6
7
8YARN中目前的CPU被划分成虚拟CPU(CPU virtual Core),
- YARN自己引入的概念,
- 初衷是,考虑到不同节点的CPU性能可能不同,每个CPU具有的计算能力也是不一样的,
用户提交作业时,可以指定每个任务需要的虚拟CPU个数。
历史版本中,默认1物理core=2vcore
最新版本,1物理core=1vcore容器
1
2
3
4
5YARN中目前的
- Container是运行在nodemanager节点机器上,虚拟的概念
- 将一定大小的内存和cpu vcore组成的最小单元
- 运行计算的任务task,每1个container都是1个单独的进程
YARN的执行流程
1 | ResourceManager 资源作业管理者 |