YARN 的架构是怎样的?

推荐答案

YARN(Yet Another Resource Negotiator)是Hadoop 2.0引入的资源管理系统,它的架构主要由以下几个核心组件组成:

  1. ResourceManager (RM)

    • 全局资源管理器:负责整个集群的资源管理和调度。
    • Scheduler:负责分配资源给各个应用程序,但不参与应用程序的具体执行。
    • ApplicationsManager:负责接受作业提交,协调应用程序的启动和监控。
  2. NodeManager (NM)

    • 每个节点上的代理:负责管理单个节点上的资源,并执行ResourceManager分配的任务。
    • Container:NodeManager启动的容器,用于运行应用程序的任务。
  3. ApplicationMaster (AM)

    • 每个应用程序的主控进程:负责与ResourceManager协商资源,并与NodeManager协作执行和监控任务。
    • 任务调度:ApplicationMaster负责将任务分配给合适的Container,并监控任务的执行状态。
  4. Container

    • 资源分配的基本单位:包含CPU、内存等资源,用于运行应用程序的任务。

本题详细解读

ResourceManager (RM)

ResourceManager是YARN的核心组件之一,负责整个集群的资源管理和调度。它主要由两个部分组成:

  • Scheduler:负责根据资源需求和可用性,将资源分配给各个应用程序。Scheduler不参与应用程序的具体执行,只负责资源的分配。
  • ApplicationsManager:负责接受作业提交,协调应用程序的启动和监控。它为每个应用程序分配一个ApplicationMaster,并监控其状态。

NodeManager (NM)

NodeManager是每个节点上的代理,负责管理单个节点上的资源,并执行ResourceManager分配的任务。NodeManager的主要职责包括:

  • 资源管理:管理节点上的CPU、内存等资源。
  • 任务执行:启动和监控Container,执行应用程序的任务。
  • 状态报告:定期向ResourceManager报告节点的资源使用情况和任务执行状态。

ApplicationMaster (AM)

ApplicationMaster是每个应用程序的主控进程,负责与ResourceManager协商资源,并与NodeManager协作执行和监控任务。ApplicationMaster的主要职责包括:

  • 资源协商:与ResourceManager协商资源,获取所需的Container。
  • 任务调度:将任务分配给合适的Container,并监控任务的执行状态。
  • 容错处理:处理任务失败的情况,重新申请资源并重新执行任务。

Container

Container是YARN中资源分配的基本单位,包含CPU、内存等资源,用于运行应用程序的任务。每个Container由NodeManager启动,并由ApplicationMaster管理。Container的生命周期由ApplicationMaster控制,任务完成后,Container会被释放。

通过以上组件的协作,YARN能够有效地管理和调度集群资源,支持多种计算框架(如MapReduce、Spark等)的运行。

纠错
反馈