Hadoop系列(八)Hadoop三大核心之Yarn 资源调度初探

喵了个喵,我又遇到瓶颈了

[TOC]

0. Yarn的来源

​ hadoop 1.x的时代,并没有Yarn,hadoop核心组件只有HDFS和MapReduce。到了hadoop2.x才有了Yarn的诞生,组件包含HDFS,MapReduce和Yarn。

​ 诞生原因:hadoop 1.x存在的最大问题就是资源管理问题。技术的发展不再满足于hadoop集群中只使用MapReduce一个计算框架,人们更希望有一套合理的管理机制,来控制集群的资源管理问题。就此Yarn诞生。

1. YARN概述

全称 Yet Another Resource Negotiator。是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而 MapReduce,spark 等运算程序可以运行在YARN上,相当于应用程序运行于操作系统之上

YARN 是 Hadoop2.x 版本中的一个新特性。它的出现是为了解决第一代 MapReduce 编程框架的不足,提高集群环境下的资源利用率,这些资源包括内存,磁盘,网络,IO等。Hadoop2.X 版本中重新设计的这个 YARN 集群,具有更好的扩展性,可用性,可靠性,向后兼容性,以及能支持除 MapReduce 以外的更多分布式计算程序

YARN的特点:

  1. YARN不清楚提交的程序的运行机制
  2. 只提供运算资源的调度,分配。用户申请就分配。
  3. 与运行的用户程序完全解耦。 YARN 上可以运行各种类型的分布式运算程序。比如 MapReduce、Storm 程序,Spark 程序等
  4. yarn 是一个通用的资源调度平台,企业中存在的各种运算集群都可以整合在一个物理集群上,提高资源利用率,方便数据共享

Yarn最大的特点是执行调度与Hadoop上运行的任务类型无关

2. YARN的重要组成部分

有两类长期运行的守护进程提供核心服务

  • ResourceManager(主节点) :全局资源管理器
  • NodeManager(从节点):节点资源管理器

主从结构如图

image-20191103184844628

2.1 ResourceManager

RM组件是负责资源管理的,整个系统有且只有一个 RM ,来负责资源的调度。ResourceManager 会为每一个 Application 启动一个 ApplicationMaster, 并且 ApplicationMaster 分散在各个 NodeManager 节点

RM里面还有两个重要组成部分:

  1. 应用程序管理器 Application Manager
  2. 资源调度器 Resource Scheduler

ResourceManager名字就是这两个词合并而来

Application Manager 应用程序管理器

应用程序管理器就是负责管理 Client 用户提交的应用的管理器

主要功能:

  1. 负责接收client端传输的job请求,为应用(MapReduce 程序)分配一个Container(资源池)来运行一个Application Master

  2. 负责监控Appication Master

  3. 并且在遇到失败的时候重启Application Master

Scheduler 资源调度器

Resource Scheduler即资源调度器,是让每一个节点都充分利用起来,合理分配和调度资源的一种管理器。

值得注意的是:调度器真的只是一个调度器,不参与任何具体的和应用程序相关的工作。

2.2 NodeManager

NodeManager 是 YARN 集群当中真正资源的提供者,是真正执行应用程序的容器的提供者, 监控应用程序的资源使用情况(CPU,内存,硬盘,网络),并通过心跳向集群资源调度器 ResourceManager 进行汇报以更新自己的健康状态。同时其也会监督 Container 的生命周期管理,监控每个 Container 的资源使用(内存、CPU 等)情况,追踪节点健康状况,管理日 志和不同应用程序用到的附属服务(auxiliary service)。

2.3 逻辑上的组件Application Master

ApplicationMaster 就是一个java程序,进程名:MRAppMaster

作用:负责监控Map、Reduce任务。用户提交的每一个程序都会产生一个ApplicationMaster,这个AM就是负责整个任务的一个管理者,由这个 AM去向ResourceManager 申请容器资源,获得资源后会将要运行的程序发送到容器上启动,然后进行分布式计算。

主要功能:

  1. 与调度器(Scheduler)协商,获取执行资源
  2. 与NodeManager通信,启动任务和停止任务
  3. 监控所有旗下Job的执行状态,重启失败任务

3. Container 资源池

Yarn中的资源抽象,封装了多维度资源: 内存,cpu,磁盘等。Container就是Scheduler进行资源分配的一个单位,也是运行各个任务的容器。

  • 容器由 NodeManager 启动和管理,并被它所监控。
  • 容器被 ResourceManager 进行调度。

image-20191104135136097

4. 小结

Yarn是Hadoop2.x之后引入的新组件。Yarn的架构采用了主从结构,一主多从(ResourceManager & NodeManager)。Yarn在Hadoop中的功能作用有两个,第一是负责Hadoop集群中的资源管理(resource management),第二是负责对任务进行调度和监控(scheduling/monitoring)。

文章目录
  1. 1. 0. Yarn的来源
  2. 2. 1. YARN概述
  3. 3. 2. YARN的重要组成部分
    1. 3.1. 2.1 ResourceManager
      1. 3.1.1. Application Manager 应用程序管理器
      2. 3.1.2. Scheduler 资源调度器
    2. 3.2. 2.2 NodeManager
    3. 3.3. 2.3 逻辑上的组件Application Master
  4. 4. 3. Container 资源池
  5. 5. 4. 小结
|