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

一、可以将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. 1 min 数据查询 SQL 优化

    问题 前几天线上数据库 IOPS 飙升,一直居高不下,最近并没有升级.遂查看数据库正在执行的 SQL 语句,发现有个查询离线设备的语句极其缓慢. 探寻原因 SELECT o.* FROM ( SELE ...

  2. wpf屏蔽快捷键alt+space,alt+F4

    /// <summary>        /// 阻止 alt+f4和alt+space 按键        /// </summary>        /// <par ...

  3. Win10《芒果TV - Preview》更新v3.1.31.0,全新播放页蜕变,预加载提速技术

    Win10<芒果TV - Preview>(商店内测版) v3.1.31.0 于2016年11月21日星期一晚上九点半登陆商店 主要是全面升级改造桌面播放页,新增观看互动评论.猜你喜欢功能 ...

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

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

  5. 在DELPHI中*.wav 文件怎么加到资源文件中

    比较“流行”的说法是:“16位的Delphi   1.0和32位的Delphi2.0.3.0都提供了资源         编译工具,其中   Delphi   1.0的资源编译器叫BRCC.EXE,D ...

  6. Delphi获得一个进程的主窗体(GetWindow(AHandle, GW_OWNER)等于0的窗体才是主窗体,并且要IsWindowVisible排除Application窗口)

    type  TMainWindow = packed record    ProcessID: THandle;    MainWindow: THandle;  end;  PMainWindow  ...

  7. 小抄:选择 Unity 的对象生命周期管理员

    Unity 框架提供了数种生命周期管理员,各有相同和相异之处.刚开始接触时,难免头昏. 制作这张小抄,只是为了要帮助自己理解和记忆.如果你也用 Untiy,或可参考看看. 文字說明: Transien ...

  8. HTML连载9-video标签的第二种格式&audio标签

    一.video第二种格式 1.背景:由于视频数据非常重要,所以五大浏览器厂商都不愿意支持别人的视频格式,所以导致了没有一种视频格式是所有浏览器都支持的.这个时候W3C为了解决这个问题,所以推出了第二种 ...

  9. Docker+ Kubernetes已成为云计算的主流(二十五)

    前言 最近正在抽时间编写k8s的相关教程,很是费时,等相关内容初步完成后,再和大家分享.对于k8s,还是上云更为简单.稳定并且节省成本,因此我们需要对主流云服务的容器服务进行了解,以便更好地应用于生产 ...

  10. PHP实现WebService服务

    第一步,安装PHP扩展SOAP并开启扩展,是否开启成功以phpinfo为准. 第二步,创建服务端文件server.php <?php Class server { public function ...