YARN 的根本思维
YARN 的根本思维是将资源管理和作业调度以及监控的性能拆分为独自的守护过程。这种架构思维是领有一个全局的 ResourceManager(RM)和每个应用程序的 ApplicationMaster(AM)。应用程序能够是单个作业,也能够是作业的 DAG。
YARN 的组成
ResourceManager 和 NodeManager 组成数据计算框架。ResourceManager 是具备在零碎中所有应用程序之间仲裁资源的最终权限。NodeManager 是每台机器的框架代理,负责监控容器的资源应用状况(cpu,内存,磁盘,网络),并将其报告给 ResourceManager 或 Scheduler。
实际上,每个应用程序的 ApplicationMaster 是特定于框架的库,其工作是对来自 ResourceManager 的资源进行协调,并与 NodeManager 一起执行和监控工作。
ResourceManager
ResourceManager 具备两个次要组件:Scheduler 和 ApplicationsManager。
Scheduler
Scheduler 负责将资源分配给各种正在运行的应用程序,但要遵循相熟的容量,队列等束缚。从某种意义上说,调度器是纯调度程序,它不监控或跟踪应用程序的状态。此外,它也不保障因为应用程序故障或硬件故障而重新启动失败的工作。大数据培训调度程序依据应用程序的资源需要执行调度性能;它基于资源容器的抽象概念来做到这一点,该容器蕴含诸如内存,cpu,磁盘,网络等因素。
调度程序具备可插拔策略,该策略负责在各种队列,应用程序等之间调配群集资源。以后的调度程序(例如 CapacityScheduler 和 FairScheduler)将是一些插件示例。
ApplicationsManager
ApplicationsManager 负责承受作业提交,协商用于执行特定于应用程序的 ApplicationMaster 的第一个容器,并提供在失败时重新启动 ApplicationMaster 容器的服务。每个应用程序 ApplicationMaster 负责与调度程序协商适当的资源容器,跟踪其状态并监控其进度。
YARN 作业调度
hadoop-2.x 中的 MapReduce 与以前的稳固版本(hadoop-1.x)放弃 API 兼容性。这意味着仅通过从新编译,所有 MapReduce 作业仍应在 YARN 上放弃不变。
YARN 通过 ReservationSystem 反对资源保留的概念,ReservationSystem 是一个组件,该组件使用户能够指定资源随工夫的限度状况(例如,截止日期),并保留资源以确保重要工作的可预测执行。ReservationSystem 会随着工夫的推移跟踪资源,执行预留的准入管制,并动静批示底层的调度程序以确保预留已满。
为了将 YARN 扩大到成千上万个节点,YARN 通过 YARN 联结性能反对联结的概念。联结容许将多个 YARN(子)集群簇通明地连贯在一起,并使它们看起来像是一个整体簇。这能够用于实现更大的规模,和容许将多个独立的集群一起用于十分大的工作,或用于具备全副能力的租户。