【大数据】【Hadoop】4、Hadoop系统的组成(Hadoop2.x)

文章目录

  • Hadoop2.X简介;
  • 一、容器
  • 二、节点管理器
  • 三、资源管理器
  • 四、应用程序管理器
  • 五、 YARN 请求分解

Hadoop2.X简介;

Hadoop 2.0,经常被称为 MapReduce2.0(MR v2)或者 YARN。MR v2 是一套应用编程接口(API),该接口兼容 MR v1,根据 MR v1 接口编写的程序仅需重新编译即可。Hadoop 2.x 系统的底层架构已经完全改变了,Hadoop 1.x 中的作业调度器担两个主要功能:

  • 资源管理(Resource management)
  • 作业调度/作业监控 (Job scheduling/job monitoring)

YARN 把这两个功能分为两个守护进程来分别承担。这样的设计使得系统有一个全局的资源管理器以及每个程序有一个应用程序管理器(Application Master)。注意,我们这里提到了程序(application),而不是作业(job)。在新的 Hadoop 2.x 系统中,一个程序 (application)
既可以指传统概念上的一个单独的 MapReduce 作业,也可以指一系列作业组成的有向无环图Direeted Acyclic Graph, DAG)。

YARN 系统由以下几个组成部分(!!!其实下面这几部分非进程):

  1. 全局资源管理器(Global Resource Manager)
  2. 节点管理器(Node Manager)
  3. 针对每种应用程序的应用程序管理器(Application-specific Application Master)
  4. 调度器(Scheduler)
  5. 容器 (Container)

一部分 CPU 内核和一部分内存构成了一个容器。一个应用程序(application)运行在一组容器中。应用程序管理器的一个实例会向全局资源管理器请求获取资源。调度器会通过每个节点的节点管理器(Node Manager)来分配资源(容器)。节点管理器会向全局资源管理器汇报每个容器的使用情况。

全局资源管理器和每个节点的节点管理器构成了新 MapReduce 框架的管理系统。全局资源管理器全权负责系统资源的分配。每种应用程序都有一个应用程序管理器。(比如,MapReduce 是一种应用程序,每个 MapReduce 作业是 MapReduce 类型程序的一个实例,就像面向对象编程中的类和对象之间的关系一样)。针对同一应用程序类型的所有应用程序,一个应用程序管理器实例被初始化。应用程序管理器实例(instance)向全局资源管理器协商获得容器来运行作业。全局资源管理器利用调度器(全局组件)与每个节点的节点管理器的沟通结果来分配资源。从系统角度来看,应用程序管理器也是运行在一个容器之中的。

【大数据】【Hadoop】4、Hadoop系统的组成(Hadoop2.x)_第1张图片

一、容器

容器(Container)是YARN框架中的计算单元。它是一个任务进行工作的单元子系统。也可以这么认为,YARN框架中的容器相当于 MapReduce v1 中的一个任务(task)执行器。集群节点与容器之间的关系是:一个节点可以运行多个容器,但一个容器只能运行在一个节点之内。 一个容器就是已分配的一组系统资源。目前支持两种类型的系统资源:

  • 中央处理器内核(CPU core
  • 内存(单位为 MB)

拥有系统资源的容器在某一节点上执行,所以一个容器中隐含了“资源名称”的概念,这个“资源名称”就是容器所在的机架和节点的名称。请求一个容器的时候,就会向一个节点发出请求。容器使得程序可以在某个节点上获得指定数量的 CPU 内核和一定数量的内存。

实际上,任何任务或者程序(单个任务或者多个任务组成的有向无环图)都运行在一个或者多个容器中。在 YARN 框架中全权负责分配容器的组件叫做节点管理器。

二、节点管理器

节点管理器(Node Manager)运行在集群中的一个节点上,集群中每个节点都会运行一个自己的节点管理器。它是作为一个从属服务(slave service):它接受来自另外一个称为资源管理器的组件的请求,然后分配容器给应用程序。它还负责监控和汇报资源使用情况给资源管理器。在 Hadoop 集群中,节点管理器与资源管理器一起协同工作,负责管理分配 Hadoop 系统资源***。资源管理器是一个 Hadoop 集群的全局组件,节点管理器作为各个节点的代理来负责管理集群中每个节点的健康情况。***节点管理器的任务如下:

  • 接受来自资源管理器的请求,为作业的执行分配容器。
  • 与资源管理器交换信息,确保整个集群的稳定运行。资源管理器依靠各个节点管理器的汇报来跟踪整个集群的健康状况,节点管理器作为代理任务来监控和管理本节点的健康状况。
  • 管理每个已启动的容器的整个生命周期。
  • 每个节点的日志管理。
  • 运行各种 YARN 应用程序使用的辅助服务(auxiliary service)。举个例子,在目前的Hadoop 系统实现中,MapReduce 程序中的 Shuffle 服务就是一个铺助服务。

当一个节点启动,它会向贪源管理器注册,并且告诉货源管理器有多少货源(最终可分配给容器使用的资源)可用。在节点运行期间,节点管理器和资源管理器会协同工作,不停地更新系统资源状态,保证集群资源有效地、优化地利用。

节点管理器仅对抽象出来的容器进行管理,而对单个应用程序或者应用程序类型的情况一无所知。负责管理这部分内容的是一个被称为应用程序管理器(Application Master)的组件。

三、资源管理器

资源管理器的核心是一个调度器:当多个应用程序竞争使用集群资源的时候,它来负责资源的分配调度,确保集群资源的优化合理使用。资源管理器有一个插件化的调度器,该调度器按照程序队列和集群的处理能力,负责为正在运行的多个应用程序分配其所需的集群资源。Hadoop自带了计算能力调度器和公平调度器。
一个任务的启动、配置及其资源的监控都由计算节点上的节点管理器(Node Manager)来负责。这种职责的分离使得资源管理器相比传统的作业调度器(JobScheduler)具备更好的系统扩展性。

四、应用程序管理器

***应用程序管理器(Application Master)是老的 MapReduce v1 框架和 YARN 之间的关键区别之处。***应用程序管理器是一个特定的框架丽数库(framework-specific library)实例。它同资源管理器协调沟通资源,并通过节点管理器来获取这些系统资源,然后执行任务。应用程序管理器就是与资源管理器沟通以获取拥有系统资源的容器的组件。

应用程序管理器为 YARN 框架主要带来了以下好处:

  • 提高了可扩展性。
  • 框架更加通用。

在 MapReduce v1 中,负责处理任务失败的责任由作业跟踪器承担。作业跟踪器还要负责给要执行的任务分配系统资源。 资源管理器(作业跟踪器的替代者)现在仅仅负责系统资源的调配,使得 MapReduce v1 系统框架的可扩展性获得了提升。管理作业或应用程序的工作就交给了应用程序管理器。 如果一个任务失败了,应用程序管理器会同资源管理器协调沟通以获取系统资源,并尝试着重新执行该任务。

五、 YARN 请求分解

【大数据】【Hadoop】4、Hadoop系统的组成(Hadoop2.x)_第2张图片

你可能感兴趣的:(hadoop,大数据,YARN,hadoop,big,data,mapreduce)