处理客户端请求
启动/监控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容器提供服务。
整个集群有多个,负责点节点的资源的管理和使用。
单个节点上的资源管理
处理来自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报告的每台机器框架代理。
管理一个在yarn内运行的应用程序的每个实例(hive,spark)
数据切分
为应用程序申请资源,并分配给内部任务
任务监控与容错
负责协调来自ResourceManager的资源,通过nodeManager监视容器的执行和资源使用(cpu、内存等资源分配)
image.png
说明:yarn主要工作是资源调度和资源隔离。他是一个部门经理,可以在不同的项目组调度任何人员,而各个资源(人员)是各个项目组的。部门经理只是协调资源,任务下达,而项目组长需要根据任务要求提供相应的资源(人员),项目组长保证这个人只处理这个任务。这个人员不会共享。
类比:ResourceManager表示部门经理、nodemanager表示项目组长、container表示组员、applicationMaster表示项目经理