YARN的架构
YARN业务架构图
ResourceManager
全局资源管理器,整个集群只有一个,负责集群资源的统一管理和调动分配。(可以理解为肯德基里面唯一一个收银员,处理客户请求,启用客户下单处理的厨师,并且监控厨师,为订单分配厨房资源 )
- 处理客户端请求
- 启动/监控ApplicationMaster
- 监控NodeManager
- 资源分配与调度
The ResourceManager has two main components: Scheduler and ApplicationsManager.
ResourceManager有两个主要组件:Scheduler 和ApplicationsManager.
Scheduler介绍
Scheduler负责为各种运行中的应用程序分配资源,这些应用程序通常受到容量、队列等的限制。Scheduler是纯粹的调度程序,因为它不为应用程序执行状态监视或跟踪。此外,它也不能保证由于应用程序故障或硬件故障而重新启动失败的任务。Scheduler根据应用程序的资源需求执行其调度功能;它是基于资源容器(Container)的抽象概念执行的,该概念包含内存、CPU、磁盘、网络等元素。在第一个版本中,只支持内存。
ApplicationsManager介绍
The ApplicationsManager is responsible for accepting job-submissions, negotiating the first container for executing the application specific ApplicationMaster and provides the service for restarting the ApplicationMaster container on failure.
ApplicationsManager负责接受作业提交,协商执行特定于应用程序的ApplicationMaster的第一个容器,并为失败时重新启动ApplicationMaster容器提供服务。
NodeManager介绍
整个集群有多个,负责点节点的资源的管理和使用。
- 单个节点上的资源管理
- 处理来自ResourceManager的命令
- 处理来自ApplicationMaster的命令
NodeManager管理抽象容器,这些容器代表可供一个特定应用程序使用节点资源。
并向ResourceManager/Scheduler报告的每台机器框架代理。
The NodeManager is the per-machine framework agent who is responsible for containers, monitoring their resource usage (cpu, memory, disk, network) and reporting the same to the ResourceManager/Scheduler.
NodeManager是负责容器、监视它们的资源使用情况(CPU、内存、磁盘、网络)并向ResourceManager/Scheduler报告的每台机器框架代理。
ApplicationMaster
管理一个在yarn内运行的应用程序的每个实例(hive,spark)
- 数据切分
- 为应用程序申请资源,并分配给内部任务
- 任务监控与容错
负责协调来自ResourceManager的资源,通过nodeManager监视容器的执行和资源使用(cpu、内存等资源分配)
container
yarn资源管理
说明:yarn主要工作是资源调度和资源隔离。他是一个部门经理,可以在不同的项目组调度任何人员,而各个资源(人员)是各个项目组的。部门经理只是协调资源,任务下达,而项目组长需要根据任务要求提供相应的资源(人员),项目组长保证这个人只处理这个任务。这个人员不会共享。
类比:ResourceManager表示部门经理、nodemanager表示项目组长、container表示组员、applicationMaster表示项目经理