Apache Hadoop YARN
YARN的基本思想是将资源管理和作业调度/监视的功能分解为单独的守护进程。 我们的想法是拥有一个全局ResourceManager(RM)和每个应用程序ApplicationMaster(AM)。 应用程序可以是单个作业,也可以是作业的DAG(有向无环图)。
ResourceManager和NodeManager构成了数据计算框架。 ResourceManager是在系统中的所有应用程序之间仲裁资源的最终权限。 NodeManager是每台机器框架代理,负责容器,监视其资源使用情况(CPU,内存,磁盘,网络)并将其报告给ResourceManager / Scheduler。
每个应用程序的ApplicationMaster实际上是一个特定于框架的库,其任务是协调来自ResourceManager的资源,并与NodeManager一起执行和监视任务。
ResourceManager有两个主要组件:Scheduler和ApplicationsManager。
Scheduler负责根据熟悉的容量,队列等约束将资源分配给各种正在运行的应用程序。Scheduler是纯调度程序,因为它不执行应用程序状态的监视或跟踪。 此外,由于应用程序故障或硬件故障,它无法保证重新启动失败的任务。 Scheduler根据应用程序的资源需求执行其调度功能; 它是基于资源Container的抽象概念,Container包含内存,CPU,磁盘,网络等元素。
Scheduler 具有可拔插策略,该策略负责在各种队列,应用程序等之间对集群资源进行分区。当前的Scheduler(如CapacityScheduler和FairScheduler)是Scheduler插件的一些示例。
ApplicationsManager负责接收作业提交,协调第一个容器以执行特定于应用程序的ApplicationMaster,并提供在失败时重新启动ApplicationMaster的服务。 每个应用程序的ApplicationMaster负责从Scheduler协调适当的资源容器,跟踪其状态并监视进度。