YARN集群架构

发布时间 2023-12-21 23:11:37作者: 智慧的骆驼

          玩Hadoop的不知道YARN?这简直是天大的笑话!之前介绍Hadoop核心组件的时候(详见《Hadoop的“前世今生”》那篇博文)就曾提到过“YARN是实现了集群资源管理以及作业调度的框架”,那么本文就对YARN集群架构做进一步的介绍。

       

    YARN集群总体上是经典的Master/Slave架构,主要由ResourceManager(Master)、NodeManager(Slave)、ApplicationMaster、Container等几个组件构成。下面对各个组件进行介绍:

     1. ResourceManager

        以后台进程的形式运行,负责对集群资源进行统一管理和任务调度。主要职责如下:

  • 接收来自客户端的请求。
  • 启动和管理各个应用程序的ApplicationMaster。
  • 接收来自ApplicationMaster的资源申请,并为其分配Container。
  • 管理NodeManager,并接收来自NodeManager的资源和节点健康情况的汇报。       

    2. NodeManager

       集群中每个节点上的资源和任务管理器,以后台进程的形式运行。

    3. Task

       应用程序的具体执行任务。一个应用程序可能有多个任务,例如,一个MapReduce程序可以有多个Map任务和多个Reduce任务。

    4. Container

       封装了资源(CPU、内存等)。一个应用程序所需的Container分为两类:运行ApplicationMaster的Container和运行各类Task的Container。

    5. ApplicationMaster

       一个应用程序对应一个ApplicationMaster,在用户提交一个应用程序时,会启动一个ApplicationMaster实例,ApplicationMaster会启动所有需要的Task来完成它负责的应用程序,并且监视Task的运行状态和运行进度,重新启动失败的Task,等等。

       总结:ResourceManager管理整个集群;NodeManager管理集群中单个节点;ApplicationMaster管理单个应用程序(集群中可能同时有多个应用程序在运行,每个应用程序都有各自的ApplicationMaster)。