文档章节

Hadoop 系列YARN:资源调度平台(YARN介绍)

o
 osc_x5bcobu8
发布于 2018/11/17 10:44
字数 2037
阅读 30
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

YARN介绍

YARN的全称是Yet Another Resource Negotiator,意为另一种资源调度者。 从Apache Hadoop 2.0开始, Hadoop包含 YARN。

Hadoop 1.x与Hadoop 2.x

    (1)MRv1
    在介绍Yarn之前,我们先回头看一下Hadoop1.x对MapReduce job的调度管理方式。在Hadoop 1.x版本中,MapReduce(也称MRv1)既要负责资源管理又要负责作业处理。MapReduce(MRv1)运行时环境由(一个)JobTracker和(若干个)TaskTracker两类服务组成。其中,JobTracker负责资源管理和所有作业的控制,而TaskTracker负责接收来自JobTracker的命令并执行它。该框架在扩展性、容错性和多框架支持等方面存在不足,这也促使了MRv2的产生。

    (2)MRv2
    在Apache Hadoop 2.x中,我们将MapReduce(MRv1)分解为Apache Hadoop YARN,一种通用的分布式应用程序管理框架,而Apache Hadoop MapReduce(又称MRv2)仍然是一个纯粹的分布式计算框架。
    MRv2是在运行于资源管理框架YARN之上的计算框架MapReduce。它的运行时环境不再由JobTracker和TaskTracker等服务组成,而是变为通用资源管理系统YARN和作业控制进程ApplicationMaster。 简言之,MRv1仅是一个独立的离线计算框架,而MRv2则是运行于YARN之上的MapReduce。
    (3)YARN
    YARN是Hadoop 2.x中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度。YARN不仅限于MapReduce一种框架使用,也可以供其他框架使用,比如Hive、Spark、Storm等。由于YARN的通用性,下一代MapReduce的核心已经从简单的支持单一应用的计算框架MapReduce转移到通用的资源管理系统YARN。

为了让大家更进一步理解以 YARN 为核心的软件栈(Hadoop 2.x),我们将与以 MapReduce 为核心的软件栈(Hadoop 1.x)进行对比,如下图。在Yarn中我们把job的概念换成了application,因为在新的Hadoop2.x中,运行的应用不只是MapReduce了,还有可能是其它应用如一个DAG(有向无环图Directed Acyclic Graph,例如storm应用)。Yarn的另一个目标就是拓展Hadoop,使得它不仅仅可以支持MapReduce计算,还能很方便的管理诸如Hive、Hbase、Pig、Spark/Shark等应用。
Hadoop 2.x的YARN已经不再局限于支持MapReduce 一种计算框架,而是朝着对多种框架进行统一管理的方向发展。

 

YARN的架构

YARN的架构还是经典的主从(master/slave)结构,如下图所示。大体上看,YARN服务由一个ResourceManager(RM)和多个NodeManager(NM)构成,ResourceManager为主节点(master),NodeManager为从节点(slave)。

 

 简单地说,YARN 主要由 ResourceManager、NodeManager、ApplicationMaster和 Container 等几个组件构成。

    Container是Yarn对计算机计算资源的抽象,它其实就是一组CPU和内存资源,所有的应用都会运行在Container中。
    ApplicationMaster是对运行在Yarn中某个应用的抽象,它其实就是某个类型应用的实例,ApplicationMaster是应用级别的,它的主要功能就是向ResourceManager(全局的)申请计算资源(Containers)并且和NodeManager交互来执行和监控具体的task。
    Scheduler是ResourceManager专门进行资源管理的一个组件,负责分配NodeManager上的Container资源,NodeManager也会不断发送自己Container使用情况给ResourceManager。
(1)ResourceManager(RM)
RM 是一个全局的资源管理器,负责整个系统的资源管理和分配。RM有两个主要组件:调度器(Scheduler)和应用程序管理器(Applications Manager)。

    调度器(Scheduler),负责根据容量,队列等的熟悉约束,向各种运行的应用程序分配资源。调度程序是纯调度器,它不执行监视或跟踪应用程序的状态。此外,由于应用程序故障或硬件故障,它不能保证重新启动失败的任务。调度程序根据应用程序的资源需求执行其调度功能; 它基于包含诸如内存,cpu,磁盘,网络等元素的资源容器的抽象概念。YARN 提供了多种直接可用的调度器,比如 FairScheduler 和 Capacity Scheduler 等。
    ApplicationsManager负责接受作业提交,协商第一个容器来执行应用程序特定的ApplicationMaster,并提供服务,以便在失败时重新启动ApplicationMaster容器。每个应用程序ApplicationMaster有责任从调度程序协商适当的资源容器,跟踪其状态并监视进度。

(2) ApplicationMaster ( AM )
当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster(AM),它负责向 ResourceManager 申请资源,并要求 NodeManger 启动可以占用一定资源的任务。
AM主要功能包括:

    与 RM 调度器协商以获取资源(用 Container 表示);
    将得到的任务进一步分配给内部的任务;
    与 NM 通信以启动 / 停止任务;
    监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

ApplicationMaster 负责一个应用程序生命周期内的所有工作。但注意每一个 应用程序(不是每一种)都有一个 ApplicationMaster,它可以运行在 ResourceManager 以外的机器上。

(3)NodeManager ( NM )
NM 是每个节点上的资源和任务管理器,一方面,它会定时地向 RM 汇报本节点上的资源使用情况和各个 Container 的运行状态;另一方面,它接收并处理来自 AM 的 Container启动 / 停止等各种请求。
NM 功能比较专一,就是负责 Container 状态的维护,并向 RM 保持心跳。

(4)Container
Container 是 YARN 中 的 资 源 抽 象, 它 封 装 了 某 个 节 点 上 的 多 维 度 资 源, 如 内 存、CPU、磁盘、网络等,当 AM 向 RM 申请资源时,RM 为 AM 返回的资源便是用 Container表示的。YARN 会为每个任务分配一个 Container,且该任务只能使用该 Container 中描述的资源。需要注意的是,Container 不同于 MRv1 中的 slot,它是一个动态资源划分单位,是根据应用程序的需求动态生成的。目前,YARN 仅支持 CPU 和内存两种资源,且使用了轻量级资源隔离机制 Cgroups 进行资源隔离。

 

YARN工作流程


了解了上面介绍的这些概念,我们有必要看一下Application在Yarn中的执行过程。当用户向 YARN 中提交一个应用程序后,YARN 将分两个阶段运行该应用程序 :第一个阶段是启动 ApplicationMaster ;第二个阶段是由 ApplicationMaster 创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行完成。

下面这幅图展示了应用程序的整个执行过程:

(1)客户端程序向ResourceManager提交应用并请求一个ApplicationMaster实例

(2)ResourceManager找到可以运行一个Container的NodeManager,并在这个Container中启动ApplicationMaster实例

(3)ApplicationMaster向ResourceManager进行注册,注册之后客户端就可以查询ResourceManager获得自己ApplicationMaster的详细信息,以后就可以和自己的ApplicationMaster直接交互了

(4)在平常的操作过程中,ApplicationMaster根据resource-request协议向ResourceManager发送resource-request请求

(5)当Container被成功分配之后,ApplicationMaster通过向NodeManager发送container-launch-specification信息来启动Container, container-launch-specification信息包含了能够让Container和ApplicationMaster交流所需要的资料

(6)应用程序的代码在启动的Container中运行,并把运行的进度、状态等信息通过application-specific协议发送给ApplicationMaster

(7)在应用程序运行期间,提交应用的客户端主动和ApplicationMaster交流获得应用的运行状态、进度更新等信息,交流的协议也是application-specific协议

(8)一但应用程序执行完成并且所有相关工作也已经完成,ApplicationMaster向ResourceManager取消注册然后关闭,用到所有的Container也归还给系统

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
CDH5: 使用parcels配置lzo

一、Parcel 部署步骤 1 下载: 首先需要下载 Parcel。下载完成后,Parcel 将驻留在 Cloudera Manager 主机的本地目录中。 2 分配: Parcel 下载后,将分配到群集中的所有主机上并解压缩。 3 激...

cloud-coder
2014/07/01
6.8K
1
日志分析平台 - Kibana

Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。 环境要求: ruby >= 1.8.7 (probably?) bundler logstash...

匿名
2013/02/13
11.5W
1
Hbase的Windows访问接口库--libhbase4win

libhbase4win是基于Thrift的Hbase的Windows访问接口库,开发工具使用VS2010,Hadoop版本为1.1.0,Hbase版本为0.94.0,thrift版本0.9.0,执行编译需要boost和thrift支持。...

张子良
2013/03/06
757
0
硬实时操作系统--Raw OS

Raw-OS 起飞于2012年,Raw-OS志在制作中国人自己的最优秀硬实时操作系统。 Raw-OS 操作系统特性 内核最大关中断时间无限接近0us, s3c2440系统最大关中断时间实测0.8us。 支持idle任务级别的事...

jorya_txj
2013/03/19
6.2K
1
并行编译工具--Icecream

Icecream 是由 SUSE 创建的、基于 distcc 的并行编译工具。可在远程机器上执行构建和分发、并行编译。与 distcc 不同的是,Icecream 使用一个中央服务器动态的对编译作业进行调度。...

匿名
2013/04/11
1.1K
1

没有更多内容

加载失败,请刷新页面

加载更多

什么是TypeScript?为什么我要用它代替JavaScript? [关闭]

问题: Closed . 已关闭 。 This question needs to be more focused . 这个问题需要更加集中 。 It is not currently accepting answers. 它当前不接受答案。 Want to improve this questio......

法国红酒甜
24分钟前
27
0
键盘输入限制

// 用户输入的时候替换:nativeOnInput 替换负数setInputValue(e, row, prop) { if(e.target.value.includes('-')) { e.target.value = '-'+e.target.value.replace(/-/g, ......

赤月三号
28分钟前
13
0
软件工程国家标准

软件工程国家标准分为六大类:专业基础标准、过程标准、质量标准、技术与管理标准、工具与方法标准 和 数据标准。 软考大纲将软件工程标准分为四大类:基础标准、开发标准、文档标准 和管理标...

LitStone
37分钟前
13
0
优化HBASE有感

今天终于把这一块完成了,有点慢,我告诉自己别慌,别急,慢下来。 这是产后回来做的第一个小项目,我有点急,有点慌。 起始于对HBASE一无所知的小白。 接到任务,有点头大。 先把任务分析了...

_小茗同学_
41分钟前
15
0
HashMap如何解决hash冲突

1、HashMap如何解决hash冲突? HashMap是通过 拉链法来处理冲突的 2. hash冲突的几种解决方法? 1)、开放地址法: 当 p=H(key) 出现冲突的话,那再次计算 p=H(key+1) 这样每次 加1 直到没有冲...

加油加油再加油
50分钟前
29
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部