Hadoop基础知识---之YARN原理简述

YARN原理简述

MapReduce的缺陷

多租户问题

多用户

多编程模型

JobTracker/TaskTracker架构设计缺陷

JobTracker是集中处理点,单点故障

JobTracker任务重,资源过度消耗

资源模型过于简单  --- TaskTracker以MR Task数作为资源,没有考虑CPU和内存

TaskTracker强制把资源分成map task slot和reduce taskslot   ---资源利用率低

YARN的诞生   

YARN的命名

Yet Another Resource Negotiator

根本思想

将JobTracker功能分离:资源管理;任务调度/监控

YARN设计目标

集群共享;可伸缩性;可靠性

实现方式

分层的集群框架

 

 

YARN架构

Resouce Manager

主要功能

负责紧张中所有资料的统一管理和分配

接受各个节点(NodeManager)的资源汇报信息

把资源按照策略分配给各应用(ApplicationMaster)

组成部分

用户交互User Service

NodeManager管理

ApplicationMaster管理

Application管理

安全管理

资源分配

NodeManager

主要功能

管理单个计算节点

与ResourceManager保持通信

监控Container生命周期,管理资源使用。没有map slot和reduce slot概念,扩展更容易。

组成部分

–NodeStatusUpdater

–ContainerManager(核心组件)

–ContainerExecutor

–NodeHealthCheckerService

–Security

–WebServer

ApplicationMaster

ApplicationMaster概念

JobTracker诸多问题,作业控制和资源管理分离,ApplicationMaster承担作业控制功能。

YARN称为资源管理平台,适用于多种计算框架。

--MapReduce,流式计算,迭代式计算

--需要为每个应用开发一个ApplicationMaster组件

--YARN提供MapReduce的ApplicationMaster实现

实现方式

–使用基于事件驱动的异步编程模型,由中央事件调度器统一管理所有事件

–每种组件是一种事件处理器,在中央调度器中注册

ApplicationMaster容错

–在HDFS记录task运行日志

–分配新的节点运行ApplicationMaster

–切换后从HDFS读取日志,恢复运行完成的task

–没有运行完task重新申请资源和运行

Container

Container基本概念和工作流程

Container是YARN中资源的抽象,封装了某节点上一定量的资源(内存,CPU)

由AM向RM申请,由RM中的资源调度器异步分配给AM

Container的运行由AM向资源所在的NM发起

两类Container

–运行AM

•由RM申请和启动,用户提交应用程序时,指定AM所需的资源

–运行各类任务

•由AM向RM申请,并由AM与NM通信以启动

YARN的工作流程

用户将应用程序提交到RM

RM为AM申请资源,与某个NM通信,启动AM

AM与RM通信,为执行任务申请资源

得到资源后与NM通信,启动相应的任务

所有任务结束后,AM向RM注销,整个应用结束

HadoopRPC的演变

Hadoop RPC在跨语言支持和协议兼容性两个方面存在不足

Hadoop RPC应允许某些协议的客户端或者服务器端采用其它语言实现

当前Hadoop版本较多,而不同版本之间不能通信

为了解决以上几个问题,Hadoop YARN将RPC中的序列化部分剥离开,以便将现有的开源RPC框架集成进来

–RPC类变成了一个工厂,它将具体的RPC实现授权给RpcEngine实现类,而现有的开源RPC只要实现RpcEngine接口,便可以集成到HadoopRPC中

YARN中的RPC协议

Yarn中的事件驱动与状态机

为了增大并发性,Yarn采用事件驱动的并发模型,将各种处理逻辑抽象成事件和调度器,将事件的处理过程用状态机表示

什么是状态机

---如果一个对象,其构成为若干个状态,以及触发这些状态发送相互转移的事件,那么此对象称之为状态机。

对于状态机模式,基本做法是

根据发生的时间和当前状态,来执行下一步的动作action,并设置下一个状态。

ResourceScheduler

事件处理器,处理6种事件类型:

–NODE_REMOVED,移除计算节点

–NODE_ADDED,增加计算节点

–APPLICATION_ADDED,RM收到新App

–APPLICATION_REMOVED,App运行结束

–CONTAINER_EXPIRED,一个AM在一定时间间隔内没有使用Container,会被scheduler收回

–NODE_UPDATE

•NM通过心跳向RM汇报Container情况,触发NODE_UPDATE事件,会引发资源分配

•调度器:FIFOScheduler、CapacityScheduler、FairScheduler

 

FIFO Scheduler

•最简单的调度器

•只有一个队列

•先入先出

CapacityScheduler

最大化集群吞吐量
核心思想

--- 每个队列获得一定资源  

---空闲队列可以把资源“借”给忙队列

---需要时可以取回

调度策略

应该获得的资源/实际获得的资源,选择比值最低的队列

队列内FIFO

考虑限制:用户最大资源限制,任务资源要求

资源分配模型

调度器维护多个队列信息

用户向队列提交应用

NM心跳时,调度器根据规则选择队列和应用

本地优化与延迟调度

本地优化

HDFS具有3副本,在多个节点

Container处理的数据在本地可以节省网络带宽

AM给RM提交资源申请时,发送本地申请  ---本地申请,匹配机架申请,任意申请

延迟调度

本地申请匹配失败,暂时跳过

跳过次数有限,防止“饿死”   

 

FairScheduler

 

 

•多用户公平共享集群资源

•作业池

–每个用户单独资源池

–作业放进共享资源池

–每个作业最低资源保障

•调度策略

–默认FIFO

–赤字策略

•deficti=理想情况下获得的资源-实际获得资源的差值

•优先分给最高deficit作业

 

YARN HA架构 

YARN总结

改进部分

减少MapReduce的资源瓶颈,让监控task状态的程序分布式化,更安全,更优美。

ApplicationMaster是可变更部分,可以针对不同的编程模型编写自己的ApplicationMaster,

 

让更多编程模型能够跑在Hadoop

–对资源的表示以内存和CPU为单位,比之前的slot数目更合理

–MRv1框架jobtracker监控job下的所有task,现在交给ApplicationMaster。ResourceManager监控所有ApplicationMaster ,如果出了问题在其他机器重启

–Container是Yarn作为资源隔离提出的框架,提供java虚拟机内存的隔离

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Hadoop YARN (Yet Another Resource Negotiator) 是一个基于Hadoop的集群资源管理系统Hadoop YARN Client是Hadoop YARN的一部分,它是用来与YARN ResourceManager通信的客户端工具。 Hadoop YARN Client的主要功能是向YARN ResourceManager提交应用程序并获取集群的资源来执行这些应用程序。当一个应用程序需要在Hadoop集群上运行时,开发人员可以使用Hadoop YARN Client来编写和提交应用程序,然后该客户端将应用程序的相关信息发送给YARN ResourceManager。这些应用程序可以是MapReduce程序,也可以是其他类型的应用程序,例如Spark、Flink等。 使用Hadoop YARN Client,开发人员可以指定应用程序所需的计算资源和内存等配置参数。此外,Hadoop YARN Client还可以跟踪应用程序的状态,并显示有关应用程序执行进度和状态的相关信息。如果发生错误或异常,开发人员可以使用Hadoop YARN Client来取消或终止应用程序的执行。 Hadoop YARN Client利用YARN ResourceManager的资源调度功能,将应用程序提交给ResourceManager后,ResourceManager将根据集群的资源情况来分配相应的资源给该应用程序。此外,Hadoop YARN Client还可以与NodeManager通信,以获取有关执行任务的节点的信息,并监视应用程序的进度。 总的来说,Hadoop YARN Client提供了一个方便的方式来提交和管理应用程序的执行,并与YARN ResourceManagerNodeManager进行通信,以获取资源和监视应用程序的状态。通过使用Hadoop YARN Client,开发人员可以更容易地在Hadoop集群上运行和管理各种类型的应用程序。 ### 回答2: Hadoop YARN客户端是Hadoop生态系统的一个关键组件,用于与YARN资源管理器进行通信,并提交、监控和管理MapReduce作业或其他分布式计算任务。YARN(Yet Another Resource Negotiator)是Hadoop的资源管理器,负责集群资源的分配和任务的调度。 Hadoop YARN客户端的主要功能包括作业的提交和监控。当用户想要运行一个MapReduce作业时,他们可以使用YARN客户端来提交该作业。YARN客户端将作业的执行所需要的资源需求和其他相关信息发送给YARN资源管理器。资源管理器根据集群可用的资源和调度策略来分配资源,并将作业的任务分配给相应的节点上的容器来执行。 同时,YARN客户端还可以监控作业的执行进度和状态。用户可以通过YARN客户端查询和获取作业的相关信息,如已完成的任务数、失败的任务数、运行时间等。这些信息对于实时监控作业的运行状况以及进行作业调优非常有帮助。 此外,YARN客户端还可以用于管理作业的生命周期。用户可以使用YARN客户端来杀死正在运行的作业或取消已提交但未开始执行的作业。这对于当用户不再需要某个作业时或出现意外情况需要断作业时非常有用。 总之,Hadoop YARN客户端是Hadoop生态系统负责与YARN资源管理器通信的关键组件。它提供了作业的提交、监控和管理的功能,帮助用户实现高效的分布式计算任务。 ### 回答3: Hadoop-YARN-Client是Hadoop生态系统的一个组件,它是Hadoop资源管理器(YARN)的客户端库。YARNHadoop的第二代资源管理系统,它的目的是为集群的各个工作负载提供资源调度和管理服务。 Hadoop-YARN-Client的作用是允许用户通过编程方式与YARN交互,以便向集群提交应用程序,并监控和管理它们的执行。通过Hadoop-YARN-Client,用户可以以编程方式与YARN的应用程序客户端接口(API)进行交互,完成下列任务: 1. 提交应用程序:用户可以使用Hadoop-YARN-Client将一个应用程序提交给YARN。提交应用程序时,需要指定应用程序的类型、优先级、所需资源等信息,并将应用程序的代码和依赖项打包成一个本地或分布式的Jar文件。 2. 监控应用程序:一旦应用程序被提交到YARN,用户可以使用Hadoop-YARN-Client监控应用程序的执行情况。用户可以查询应用程序的状态、进度和资源使用情况等信息。 3. 管理应用程序:用户可以使用Hadoop-YARN-Client管理应用程序的执行。例如,用户可以请求YARN增加或减少分配给应用程序的资源,或者终止应用程序的执行。 总之,Hadoop-YARN-Client是Hadoop生态系统YARN交互的关键组件之一。它为用户提供了一种便捷的方式来提交、监控和管理在YARN上执行的应用程序,让用户能够更好地利用集群资源和进行任务调度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值