一.概述
- Yarn是Hadoop的资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在资源利用率,资源统一管理和数据共享等方面带来了巨大好处.
- Yarn的基本思想是将JobTracker的两个主要功能分离(资源管理和作业调度/监控),主要方法时创建一个全局的ResourceManager和若干个针对应用程序的ApplicationMaster.这里的应用程序是指传统的MapReduce作业.
- Yarn分层结构的本质是ResourceManager.这个实体控制整个集群并管理应用程序向基础计算资源的分配.ResourceManager将各个资源部分(内存,宽带等)精心安排给基础NodeManager.
- ResourceManager还与ApplicationMaster一起分配资源,与NodeManager一起启动和监控他们的基础应用程序.ApplicationMaster承担了以前的TaskTracker的一些角色,ResourceManager承担了JObTracker的角色.
- ApplicationMaster管理一个在Yarn内运行的应用程序的每个实例.ApplicationMaster负责协调来自ResourceManager的资源,并通过NodeManager监视容器的执行和资源使用(CPU,内存等的资源分配).
二.核心思想
将JobTracker和TaskTacker进行分离
- 一个全局的资源管理器ResourceManager
- ResourceManager的每个节点代理NodeManager
- 表示每个应用的ApplicationMaster
- 每一个ApplicationMaster拥有多个Container在NodeManager上运行
三.常见参数
- yarn.nodemanager.resource.memory-mb
- yarn.nodemanager.resource.cpu-vcores
- yarn.scheduler.minimum-allocation-mb
- yarn.scheduler.maximum-allocation-mb
- yarn.scheduler.minimum-allocation-vcores
- yarn.scheduler.maximum-allocation-vcores
- mapreduce.map.memory.mb
- mapreduce.reduce.memory.mb
- yarn.resourcemanager.scheduler.class