Hadoop 系统架构分析(2)

来源:互联网 发布:伊斯兰教邪教知乎 编辑:程序博客网 时间:2024/06/05 00:11

YARN 概述

YARN 的本质是一个全局的资源管理器(ResourceManager,RM),它控制整个集群并管理基础计算资源在应用程序之间的分配。 资源管理器RM 和它在各个节点的代理——节点管理器(NodeManager,NM)构成了整个数据计算的框架:由RM 最终决定各个资源部分(CPU、内存、磁盘、网络等)在系统内各程序之间的分配,而各节点的 NM 主要负责管理容器(Containers),监视这些资源的使用并将这些信息上报给RM。

资源管理器主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,AM)。调度器负责将系统中的资源分配给各个正在运行的应用程序,但是不负责具体应用程序的相关工作,比如监控或跟踪状态、重新启动失败任务等。调度器根据应用程序对资源的需求来分配资源,这种分配依据一种抽象的资源概念——“资源容器”(Resource Container,简称Container)。Container是一个动态资源分配单位,它将内存,CPU,磁盘,网络等资源封装在一起,从而限定每个任务的资源量。调度器具有可替换的特性,用户可以自行设计。YARN提供了多种直接可用的调度器,比如FairScheduler和CapacityScheduler等。

YARN 针对每个应用程序还会启动一个应用程序管理器组件。它负责与资源管理器协商以获取资源(用Container表示),然后与节点管理器分工协作启动各项任务同时监控任务状态,并在任务运行失败时重新为任务申请资源以重启任务。应用程序管理器实际上是一个执行某种计算框架的库,目前支持的计算框架包括Mapreduce 和Spark 等。

YARN 工作流程图

上图是Hadoop 官网[1] 给出的YARN 工作流程图。要使用一个 YARN 集群,首先需要来自客户的包含一个应用程序的请求。然后由ResourceManager 协商各种必要资源,并启动一个 ApplicationMaster 来表示已提交的应用程序。通过使用一个资源请求协议,ApplicationMaster 协商每个节点上供应用程序使用的资源容器。执行应用程序时,ApplicationMaster 监视容器直到完成。当应用程序完成时,ApplicationMaster 从 ResourceManager 注销其容器,执行周期完成[2]。

YARN的引入大大提高了集群的资源利用率,并降低了集群管理成本。首先,YARN允许多个应用程序运行在一个集群中,并将资源按需分配给它们,这大大提高了资源利用率;其次,YARN允许各类短作业和长服务混合部署在一个集群中,并提供了容错、资源隔离及负载均衡等方面的支持,这大大简化了作业和服务的部署和管理成本。

本章小结——YARN的基本架构:

  • ResourceManager 是一个全局的资源管理器,它调度、启动每一个应用程序的 ApplicationMaster,同时监控 ApplicationMaster 的运行情况
  • NodeManager 是RM在每个节点上的代理,是执行应用程序的容器,功能专一,只负责 Container 状态的维护以及向 RM 保持心跳
  • ApplicationMaster 管理每个应用程序具体的资源调度和协调,负责一个应用程序生命周期内的所有工作,可以运行在 ResourceManager 以外的机器上
  • 每一个ApplicationMaster拥有多个Container在NodeManager上运行

参考资料:
[1] http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html
[2] YARN 百度百科

1 0
原创粉丝点击