欢迎关注我的公众号《小沈干货》,谢谢大家。

一、可以将YARN看作是分布式操作系统,在大数据组件中,YARN的定位是:

1)集群资源管理中心

2)任务调度中心

YARN的功能进一步可以细化为:

1)任务调度

2)资源管理

3)用户接口

二、YARN的体系架构

1.集群资源管理层

YARN采用master/slave架构,主节点上运行主服务ResourceManager,从节点上运行从服务NodeManager。Client为安装在YARN客户端协议的实体机器,集群正常运行时,只存在RM和NM两类实体进程,Client并不运行。

·ResourceManager

对内,RM通过各NM的定期心跳包,实时监控集群资源;对外,RM须为客户端提供访问接口。

·NodeManager

对内,NM以Container为单位管理本机资源,对外,NM定期向RM汇报心跳包,当然,NM也会根据RM的回复心跳包向Container发出相应指令。

YARN中的Container为一逻辑概念,可看成各类资源的一个逻辑集合,比如可称<1核、1G>(<CPU内核数、内存量>)为1个Container,此时双核2G机器包含两个Container。在整个集群内,只要标准统一,那么各机Container数固定。引入Container概念后,可大大方便NM管理本机资源,RM汇总集群资源。

·Client

非活动实体,可以是命令端、Web端或程序端,制造工具的目的是使用工具,Client就是YARN的使用者。

由上简述,可知RM和NM为YARN的核心,下面分别讲述两部分内容。

1)ResourceManager

RM内部包含诸多模块。

·客户端接口

·RTS(ResourceTrackerService)

该模块将NodeManager的心跳包中的资源信息汇总成集群资源汇总表。供Scheduler使用。

·Scheduler

该模块为YARN的任务调度和资源分配中心,ApplicationMaster执行应用程序需要向该模块申请Container等资源。

·ApplicationsManager

该模块管理所有的ApplicationMaster。

2)NodeManager

3)Client

4)Yarn-App

1、ResourceManager

(1)客户端与RM交互

·Client Service

·Administration Service

·Web Service

(2)应用程序与RM通信

·ApplicatioMasterService

该模块实现了ApplicationMasterProtocol协议,响应所有ApplicationMaster请求。

·AMLivelinessMonitor

该模块负责监控每个ApplicationMaster,如果某个ApplicationMaster超过十分钟还未上传心跳包,AMLivelinessMonitor就认定此ApplicationMaster超时失败,此ApplicationMaster申请的诸多Container也会被标记死亡等待RM回收。不过RM会重新调用这个应用程序,并在一新的空闲Container上运行对应的ApplicationMaster,默认情况下,做多允许两次这样的尝试。

(3)NodeManager与ResourceManager通信

·ResourceTrackerService

·NMLivelinessMonitor

该模块监控NodeManger对RM发来的心跳包,超过十分钟即认为超时死亡,其上的正在运行的一个或多个Container也被标记为死亡,这些Container会被其对应的ApplicationMaster重新分配至其他NodeManager的Container。

对于被标记为死亡的NodeManager,一旦该NodeManager重启后将会重新加入集群并参与Container调度。

·NodeListManager

该模块是各个NodeManager在RM内存中的一个集合,RM通过该集合管理NM。

·ApplicationManager

该模块主要管理已提交的应用程序,比如检查应用程序提出的资源请求是否合法,记录已完成应用程序基本信息(至于已完成应用程序的完整执行输出由HistoryServer托管)。

·ApplicationMasterLauncher

客户端应用程序穿过ClientService后,ApplicationMasterLauncher会向YarnScheduler模块注册应用程序并申请一个空闲Container,ApplicationMasterLauncher随后会在此Container上发起此应用程序的ApplicationMaster,此应用程序随后的Container由ApplicationMaster自行申请并拉起。

·YarnScheduler

操作系统的核心功能之一是进程调度(也称CPU调度),同样YarnScheduler也是分布式操作系统YARN的最核心的模块。它主要负责给所有正在运行的应用程序分配资源,当ApplicationMaster感知到某应用程序结束时,YarnScheduler会回收此应用程序占用的Container。

当前YARN支持的调度策略为FIFO、Fair和Capacity,其中CapacityScheduler为默认调度策略,通过配置CapacityScheduler,可以实现几个组件公用一个大集群,不过这三大调度策略可以嵌套配置(通过队列),此外YARNScheduler支持热插拔,可动态配置调度器。

RM的另一大构成是安全性组件,主要包含如下几个模块:

·ContainerTokenSecretManager

当在YARN上运行应用程序时,此应用程序的ApplicationMaster需要权限才能调用NodeManager上的Container。

·AMRTokenSecretManager

ApplicationMaster需要到YarnScheduler上申请Container,为了避免恶意程序模仿一个真正的ApplicationMaster向YarnScheduler申请Container,RM的AMRTokenSecretService模块会为每个合法的ApplicationMaster生成一系列令牌,这样,只有合法的ApplicationMaster才能申请Container。

·NMTokenSecretManager

ApplicationMaster需要与NodeManager通信,此时AppllicationMaster就需要使用NMToken来管理和NodeManager的连接。

·DelegationTokenSecretManager

只有授权的客户端才能向RM提交应用程序

·DelegationTokenRenewer

该模块在应用程序运行期间更新应用程序的令牌,直到该令牌不能再更新。

2)NodeManager

NodeManager的核心功能是管理Container。

·NodeStatusUpdater

当NodeManager启动时,NodeStatusUpdater负责向ResourceManager注册并汇报本机资源、RPC端口信息等。RM则返回心跳包给出安全相关的KEY,NodeManager将用这个KEY为ApplicationMaster的Container请求做认证。

·ContainerManager

它是NodeManager的核心组件,包含诸多子模块,它们共同协作管理本机Container.

·ContainerExecutor

该模块主要负责和底层操作系统交互,来启动、关闭并清理Container相关进程。

·NodeHealthCheckerService

该模块通过定期运行健康检查脚本,来检测节点当前健康状态,当系统健康状态发生改变时,该模块会将更改信息发送至NodeStautsUpdater,而NodeStatusUpdate则将更改信息发送给ResourceManager。

应用程序执行层

YARN上的应用程序Yarn-App也采用master/slave架构,master进程为ApplicationMaster,slave进程为App-Executor。

YARN集群工作机制:

我们从集群搭建到执行程序一步步展开:

当集群RM和NM搭建启动时,所有的NodeManager刚启动时,其上的NodeStautsUpdater会向ResourceManager注册并汇报本机资源、RPC端口等信息,RM接受心跳包后,会通过ResourceTrackerService模块响应,RTS会判断NodeManager注册信息是否合法,对于非法或退役的NodeManager发来的心跳包,RTS会拒绝它们的注册请求;对于合法的NodeManager发来的心跳包,RTS会自己维护一张集群资源汇总表,同时RTS会将Container信息转发至Yarn Scheduler模块,Yarn Scheduler会根据节点空闲状态以及应用程序请求做出调度。同时NodesListManager会在RM中唯一个集合,RM通过该集合来管理NM。NMLivelinessMonitor开始监控每个NodeManager,如果某NodeManager超过十分钟(可配置)还未上传心跳包,该NodeManager被设定为超时死亡,其上正在运行的一个或多个Container也被标记为死亡,这些Container会被其对应ApplicationMaster重新分配至其他NodeManager的Container,这里我们还没有上传应用程序。

当我们向集群提交应用程序,Client Service会处理所有来自客户端到RM的RPC操作。DelegationTokenSecretManager模块会给客户端生成代理令牌,该令牌会传递至想要和ResourceManager通信,但又没有启用KerBeros认证的应用程序。当我们的应用程序通过ClientService的安全协议时,ApplicationMasterLauncher模块会向Yarn Scheduler模块注册应用程序并申请一个空闲Container,AMRTokenSecretManager模块会为合法的申请生成一系列令牌,只有合法的才能向Yarn Scheduler申请Container,ApplicationMasterLauncher随后会在此Container上发起此应用程序的AppliocationMaster。随后ApplicationMaster会向NodeManager申请Container,此时,ApplicationMaster需要权限才能调用NodeManager上的Container,这时就需要RM的ContainerTokenSecretManager模块给ApplicationMaster提供一个系统类令牌集,ApplicationMaster持有这些令牌集并依据这些令牌集赋予的权限,向某NodeManager提出要求,执行此Node Manager维护的Container,ContainerManager模块负责管理本机Container,比如ResourceLocalizationService负责将执行应用程序执行过程中资源下载到本地—资源本地化。ContainerExecutor模块负责与底层操作系统交互,来启动Container相关进程。

ApplicationMaster启动后,ApplicationMaster会向NodeManager通信,请求启动Container执行应用程序,此时需要NMTokenSecretManager管理Application Master和NodeManager的连接。NodeManager会启动空闲的Container。所有Container将会向ApplicationMaster注册,通过App-Executor并行化执行应用程序,ApplicationMaster会监控各个App-Executor监控任务完成进度,一但所有任务完成,Scheduler会回收所有NM资源。ApplicationMaster也会向RM申请注销自己。整个过程,AMLivelinessMonitor和NMLivelinessMonitor会监控ApplicationMaster和NodeManager心跳包,NodeHealthCheckerService会定期进行系统健康检查脚本。

Yarn原理的更多相关文章

  1. 03 Yarn 原理介绍

    Yarn 原理介绍 大纲: Hadoop 架构介绍 YARN 产生的背景 YARN 基础架构及原理   Hadoop的1.X架构的介绍   在1.x中的NameNodes只可能有一个,虽然可以通过Se ...

  2. Hadoop介绍-3.HDFS介绍和YARN原理介绍

    一. HDFS介绍: Hadoop2介绍 HDFS概述 HDFS读写流程   1.  Hadoop2介绍 Hadoop是Apache软件基金会旗下的一个分布式系统基础架构.Hadoop2的框架最核心的 ...

  3. 解析HetuEngine实现On Yarn原理

    摘要:本文介绍HetuEngine实现On Yarn的原理,通过阅读本文,读者可以了解HetuEngine如何在资源使用方面融入Hadoop生态体系. 本文分享自华为云社区<MRS HetuEn ...

  4. Hadoop — Yarn原理解析

    1. 概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台:而MapReduce等运算程序则相当运行于操作系统之上的应用程序. 2. YARN的重要概念 ...

  5. 【原创 Hadoop&Spark 动手实践 4】Hadoop2.7.3 YARN原理与动手实践

    简介 Apache Hadoop 2.0 包含 YARN,它将资源管理和处理组件分开.基于 YARN 的架构不受 MapReduce 约束.本文将介绍 YARN,以及它相对于 Hadoop 中以前的分 ...

  6. yarn 原理

    产生背景 直接源于MRv1在几个方面的缺陷 扩展性受限(NameNode,JobTracker设计为单一节点,内存容量有限) 单点故障 难以支持MR之外的计算 slot数目无法动态修改,Map slo ...

  7. 【Hadoop】YARN 原理、MR本地&YARN运行模式

    1.基本概念 2.YARN.MR交互流程 3.源码解读

  8. YARN 原理简介

    YARN 组件 参考:Spark on Yarn | Spark,从入门到精通 YARN 采用 Master/Slave结构 ,包含ResourceManager 和 NodeManager Reso ...

  9. 更快、更强——解析Hadoop新一代MapReduce框架Yarn(CSDN)

    摘要:本文介绍了Hadoop 自0.23.0版本后新的MapReduce框架(Yarn)原理.优势.运作机制和配置方法等:着重介绍新的Yarn框架相对于原框架的差异及改进. 编者按:对于业界的大数据存 ...

随机推荐

  1. Introduction To The Smart Client Software Factory (CAB/SCSF Part 18)

    1. Shell This is the start-up project for the solution. It is very similar to the start-up projects ...

  2. Lexer的设计--上(3)

    lexer的构造函数 有了上一节Token做铺垫, 可以开始设计lexer, 首先应该想到的是, 源代码是以文件流的格式传到编译器中的, 所以作为编译器的前段的第一个阶段, lexer必须负责处理输入 ...

  3. WPF中类似使用tab键功能,可以向上向下定位

    原文:WPF中类似使用tab键功能,可以向上向下定位 private void tbYyrs_KeyUp(object sender, KeyEventArgs e) { UIElement elem ...

  4. mvn 命令在command prompt无法识别

    Download maven from this website: https://maven.apache.org/download.cgi 解压binary包后放到一个位置,比如C:\apache ...

  5. 查看window端口占用并结束相关进程

    启动cmd命令行 运行netstat –ano,可列出所有端口情况 根据被占用的端口号,比如8081,运行netstat -aon|findstr "8081",找到它对应的PID ...

  6. QDialog在hide()之后,就被销毁的原因

    一路跟踪源码,关键就是这两句: int QDialog::exec() { Q_D(QDialog); if (d->eventLoop) { qWarning("QDialog::e ...

  7. Python写的嗅探器——Pyside,Scapy

    使用Python的Pyside和Scapy写的嗅探器原型,拥有基本框架,但是功能并不十分完善,供参考. import sys import time import binascii from PySi ...

  8. SQLServer 订阅过期解决方法

    原文:SQLServer 订阅过期解决方法 由于分发数据库执行一个较长的事务,达到了系统预定的72小时,导致了该订阅过期,数据库分发代理已不可再启用,提示错误如下: 错误信息:已将此(这些)订阅标记为 ...

  9. 分配粒度和内存页面大小(x86处理器平台的分配粒度是64K,内存页是4K,所以section都是0x1000对齐,硬盘扇区大小是512字节,所以PE文件默认文件对齐是0x200)

    分配粒度和内存页面大小 x86处理器平台的分配粒度是64K,32位CPU的内存页面大小是4K,64位是8K,保留内存地址空间总是要和分配粒度对齐.一个分配粒度里包含16个内存页面. 这是个概念,具体不 ...

  10. 什么是OTC?

    OTC(Over The Counter)非处方药物,我国卫生部医政司是这样定义的:它是消费者可不经过医生处方,直接从药房或药店购买的药品,而且是不在医疗专业人员指导下就能安全使用的药品,即不需要凭借 ...