Hadoop中的YARN(Yet Another Resource Negotiator)是一种新的Hadoop资源管理器,是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度。以下是其相关介绍:
核心思想
将JobTracker的资源管理和作业调度/监控功能分离,创建一个全局的ResourceManager(RM)和若干个针对应用程序的ApplicationMaster(AM)。
主要架构
-
ResourceManager(RM):是全局资源管理器,负责整个系统的资源管理和分配,由调度器(Scheduler)和应用程序管理器(ApplicationsManager,ASM)构成。调度器根据容量、队列等限制条件将资源分配给应用程序;应用程序管理器负责管理所有应用程序,包括提交、启动AM及监控其状态。
-
ApplicationMaster(AM):每个应用程序包含一个AM,主要功能是与RM调度器协商获取资源,将任务分配给内部任务,与NM通信启动/停止任务,监控任务状态并在失败时重启任务。
-
NodeManager(NM):是每个节点上的资源和任务管理器,定时向RM汇报资源使用和Container运行状态,接收并处理来自AM的Container启动/停止等请求。
-
Container:是YARN中的资源抽象,封装了节点上的多维度资源,如内存、CPU等。AM向RM申请资源时,RM返回的资源用Container表示,任务只能使用Container中描述的资源。
优点
大大减小了JobTracker的资源消耗,让监测任务状态的程序分布式化;AM可变更,使更多类型的编程模型能在Hadoop集群中运行;以内存为单位表示资源更合理;将监控任务运行状况的负担从JobTracker转移到AM,提高了系统的稳定性和可扩展性。
调度器
YARN提供了多种调度器,如FIFO Scheduler(先进先出,适合低负载集群)、Capacity Scheduler(将资源分为多个队列,允许共享集群,保证每个队列最小资源使用)和Fair Scheduler(公平地将资源分给应用,使所有应用平均得到相同资源份额)。