Hadoop知识点归纳2

二.YARN

1.  YARN产生原因

① MRv1的局限性:扩展性差 、可靠性差、 资源利用率低、 无法支持多种计算框架、只能处理离线数据

② YARN是轻量级弹性计算平台。将所有不同的框架都部署到一个公共的集群中,让他们共享集群资源,并对资源进行统一使用。采用某种资源隔离方案对各个任务进行隔离。

③ 相比“一种计算框架一个集群”的模式, 共享集群模式的好处: 资源利用率高、 运维成本低 、数据共享。

2.  YARN的基本设计思想

① 基本框架对比

1.0:JobTracker由资源管理和 作业控制两部分组成

     由于JobTracker赋予的功能过多而造成负载过重

未能将资源管理相关功能与应用程序相关功能分开,造成 Hadoop难以支持多种计算框架

Hadoop知识点归纳2_第1张图片

2.0:将JobTracker的 两个主要功能分拆成两个独立的进程

资源管理进程与具体应用程序无关,负责整个集群的资源管理

作业控制进程直接与应用程序相关模块进行通信,且每个作业控制进程只负责管理 一个作业

Hadoop知识点归纳2_第2张图片

② 编程模型对比

MRv1主要由编程模型、数据处理引擎和运行环境三部分组成

MRv2重用了 其编程模型和数据处理引擎,但运行环境被完全重写

(MapReduce编程接口有两套:新API和旧API 。 采用MRv1旧API编写的程序可直接使用之前的 Jar包将程序运行在MRv2上 ,但采用MRv1新API编写的程序需要使用MRv2编程库重新编译并修改不兼容参数和返回值)

③ MRv1运行环境由JobTracker和TaskTracker组成; JobTracker负责资源和任务的管理与调度; TaskTracker负责单个节点的资源管理和任务执行

MRv2运行环境将资源管理和应用程序管理剥离,由ResourceManager和 ApplicationMaster负责; ResourceManager专管资源管理和调度; ApplicationMaster负责与具体应用程序相关 的任务切分、任务调度和容错。

Hadoop知识点归纳2_第3张图片

Hadoop知识点归纳2_第4张图片

3.  YARN基本架构(2.0中的资源管理系统)

① 基本设计思想是将MRv1中的JobTracker 拆分为两个独立的服务:

全局的资源管理器ResourceManager,负责整个系统的资源管理和分配

每个应用程序特有的ApplicationMaster,负责单个应用程序的管理

② YARN基本组成结构

YARN总体上仍然是Master/Slaves结构

在整个资源管理框架中, ResourceManager为Master, NodeManager为Slaves

ResourceManager负责对各个NodeManager上的资源进行统一管理和调度

当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster

负责向ResourceManager申请资源,并 要求NodeManager启动可以占用一定资 源的任务

 由于不同的ApplicationMaster被分布到不 同的节点上,因此它们之间不会相互影响

Hadoop知识点归纳2_第5张图片

(Map与Reduce是否异地启动取决于负载均衡

描述MR整个生命周期的粒度:job(作业)->Task(任务)->taskattempt(运行任务的实例))

ResourceManager(RM

 主要由两个组件构成:

Ø  调度器(Scheduler),

根据容量、队列等限制条件,将系统中的资源分配给各个正在运行的应用程序; 而资源分配单位用一个抽象概念 “Container”,Container是一个动态资源 分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源 量

Ø  应用程序管理器(ApplicationsManager, ASM)

负责管理整个系统中所有应用程序还包括应用程序提交,与调度器协商资源以启动ApplicationMaster,监控 ApplicationMaster运行状态,并在失败时重 新启动它

ApplicationMaster(AM

用户提交的每个应用程序均包含一个AM,主要功能包括:

Ø  与RM调度器协商以获取资源

Ø  将得到的任务进一步分配给内部的任务

Ø  与NM通信以启动/停止任务

Ø  监控或跟踪所有任务运行状态,并在任务运行失败或者硬件故障时重新为任务申请资源以重启任务

NodeManager(NM

Ø  NM是每个节点上的资源和任务管理器

Ø  一方面,它会定时向RM汇报本节点上的资源使用情况和各个Container的运行状态

Ø  另一方面,它接收并处理来自AM的 Container启动/停止等各种请求

Container

Ø  Container是YARN中的资源抽象,封装了 某个节点上的多维度资源

Ø  内存、磁盘、网络、CPU

Ø  当AM向RM申请资源时,RM为AM返回的资源便用Container表示

Ø  YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源

Ø  Container是一个动态资源划分单位,是根 据应用程序的需求动态生成的

YARN通信协议

²  RPC协议:远程过程调用协议,它是一种 通过网络从远程计算机程序上请求服务, 使用此协议不需要了解底层网络技术。

²   在YARN中,任何两个需相互通信的组件之 间仅有一个RPC协议

²  通信双方一端是Client,一端是Server,且 Client总是主动连接Serve

Hadoop知识点归纳2_第6张图片

Hadoop知识点归纳2_第7张图片

4.  YARN工作流程

²  短应用程序 一定时间内可运行完成并正常退出的应用程序, 如MapReduce作业

²  长应用程序 不出意外,永不终止运行的应用程序,通常是 一些服务,如Hbase Service、Storm Service

当用户向YARN中提交一个应用程序后, YARN将分两个阶段运行应用程序:

阶段1:启动ApplicationMaster

阶段2:由ApplicationMaster创建应用程 序,为它申请资源,监控整个运行过程, 直到运行完成

 

Hadoop知识点归纳2_第8张图片

用户向YARN提交应用程序

RM为应用程序分配第一个Container;与对应的NodeManager进行通信,要求NM在此Container中启动应用程序AM(MRAppMstr)

AM向RM注册,用户可直接通过RM查询应用程序的运行状态,然后为各个任务申请资源,监控运行状态,直到程序结束

AM采用轮询方式向RM申请和领取资源

一旦AM申请到资源就会与NM进行通信要求启动任务

NM为任务设置好运行环境后,将任务启动的命令用脚本运行的方式启动

各个任务通过RPC协议向AM报告状态和进度,如果任务失败将重启该任务

应用程序运行结束时,AM会向RM发出请求,注销和关闭自己

5.  YARN总结与发展趋势(了解)

资源管理系统设计动机

 尽管目前YARN的设计框架比较适合运行类似 于MapReduce这样的短作业,但它最终的定位是通用资源管理系统。

此类系统的动机主要解决以下两类问题:

²  提供集群资源利用率

²  服务自动化部署

资源管理系统架构演化

u 集中式架构

资源的调度和应用程序的管理功能全部放 到一个进程中完成,开源届的典型代表是 JobTracker的实现。

 缺点:集群规模受限;新的调度策略难以 融入现有代码中

u 双层调度架构

该架构可以看做一种分而治之的机制或是策略下发机制。 双层调度器仍保留一个经简化的集中式资源调度器,但具体任务相关的调度策略下放到各个应用程序调度器中完成。

 典型代表是Mesos和YARN。

²  双层调度器的特点: 各个框架调度器并不知道整个集群资源使 用情况,只是被动的接收资源;

 资源调度器仅将可用的资源推送给各个框 架,而由框架自己选择是使用还是拒绝这 些资源;

 一旦框架接收到新资源,再进一步将资源 分配给其内部的任务,进而实现双层调度

²  双层调度器的缺点: 各个框架无法知道整个集群的实时资源使 用情况; 采用悲观锁,并发粒度小。

共享状态架构

此架构将双层调度器中的集中式资源调度 模块简化成了一些持久化的共享数据和针对这些数据的验证代码;

而这里的“共享数据”实际上就是整个集 群的实时资源使用信息

YARN发展趋势

u YARN自身的完善

(1)  调度框架 当前YARN支持内存和CPU两种资源类型的 管理和分配; 服务器上还有许多其他资源,如磁盘容量、 网络和磁盘IO等,YARN可能在未来将支持 这些资源的调度和隔离。

(2)  在线升级 YARN作为一个通用资源管理平台,不仅可以运行短作业,还可以运行长作业。 对于长作业而言,由于它们需对外不间断 提供服务,因此,当YARN自身升级时,不应该干扰这类长作业。

(3)  容错机制 长作业和短作业的容错方式不同。 长作业由于它们通常拥有自己的客户端, 需为其不间断提供服务,因此,当这些作业出现故障时,应尝试本地重启,如果重 启失败,再尝试将其调度到其他节点上 短作业则一旦运行失败则换另外一个节点 重新运行

u 以YARN为核心的生态系统

YARN是未来的一个趋势,其本身已经变为 一个云操作系统,很多计算框架或应用程 序不再基于传统的操作系统开发,而是基于YARN这个云操作系统。

很多计算框架都在往YARN上迁移,如下:

 Tez 、Storm 、Spark、 Giraph、 OpenMPI

u YARN周边工具的完善

当前YARN对外提供的接口均是底层接口,这给用户编写和调试应用程序带来很大的 麻烦。

为了解决以上关于YARN上应用程序的创建、管理、调试等方面的问题,一些开源软件 诞生。

Weave针对YARN之上应用程序编写、调试和管理等方面的不完善,进行了以下改 进:

 一套经简化的、用于定义、运行和管理应用程 序的编程接口

一个通用的ApplicationMaster实现,以便直接部署简单的服务

应用程序的日志和Metric信息自动聚集呈现 Discovery服

课题作业

1.请介绍MRv1的局限性,并说明其理由

2.请介绍共享集群模式的好处,并说明其理由

3.请从基本框架和编程模型两方面对比 MRv1和MRv2

4.请阐述YARN的基本组成结构

5.请描述YARN的工作流程


你可能感兴趣的:(Hadoop)