hadoop之yarn的调度原理
YARN 的基本思想是将资源管理和作业调度/监控的功能拆分为单独的守护进程。这个想法是有一个全局 ResourceManager ( RM ) 和每个应用程序 ApplicationMaster ( AM )。应用程序可以是单个作业或作业的 DAG。
ResourceManager 和 NodeManager 构成了数据计算框架。ResourceManager 是在系统中的所有应用程序之间仲裁资源的最终权威。NodeManager 是每台机器的框架代理,负责容器、监控其资源使用情况(cpu、内存、磁盘、网络)并将其报告给 ResourceManager/Scheduler。
每个应用程序的 ApplicationMaster 实际上是一个特定于框架的库,其任务是协商来自 ResourceManager 的资源并与 NodeManager 一起执行和监视任务。

ResourceManager 有两个主要组件:Scheduler 和 ApplicationsManager。
调度程序负责根据熟悉的容量、队列等约束将资源分配给各种正在运行的应用程序。调度程序是纯粹的调度程序,因为它不执行应用程序的状态监视或跟踪。此外,它不保证由于应用程序故障或硬件故障而重新启动失败的任务。调度器根据应用程序的资源需求执行其调度功能;它基于资源容器的抽象概念,该概念包含内存、CPU、磁盘、网络等元素。
调度器有一个可插拔的策略,负责在各种队列、应用程序等之间划分集群资源。当前的调度器,如CapacityScheduler和FairScheduler将是一些插件的例子。
ApplicationsManager 负责接受作业提交,协商执行特定于应用程序的 ApplicationMaster 的第一个容器,并提供在失败时重新启动 ApplicationMaster 容器的服务。每个应用程序的 ApplicationMaster 负责与调度程序协商适当的资源容器,跟踪它们的状态并监视进度。
hadoop-2.x 中的 MapReduce 保持与之前稳定版本 (hadoop-1.x) 的API 兼容性。这意味着所有 MapReduce 作业仍应在 YARN 之上原样运行,只需重新编译即可。
YARN通过ReservationSystem支持资源预留的概念,该组件允许用户指定资源随时间和时间限制(例如,截止日期)的配置文件,并预留资源以确保重要作业的可预测执行。ReservationSystem跟踪资源超时,执行预留的准入控制,并动态指示底层调度程序确保预留已满。
为了超越几千个节点规模,纱线支持的概念联合会通过YARN联合会功能。联合允许将多个纱线(子)簇透明地连接在一起,并使它们看起来像一个巨大的簇。这可用于实现更大的规模,和/或允许将多个独立集群一起用于非常大的作业,或用于具有跨所有容量的租户。
浙公网安备 33010602011771号