Yarn原理
欢迎关注我的公众号《小沈干货》,谢谢大家。
一、可以将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原理的更多相关文章
- 03 Yarn 原理介绍
Yarn 原理介绍 大纲: Hadoop 架构介绍 YARN 产生的背景 YARN 基础架构及原理 Hadoop的1.X架构的介绍 在1.x中的NameNodes只可能有一个,虽然可以通过Se ...
- Hadoop介绍-3.HDFS介绍和YARN原理介绍
一. HDFS介绍: Hadoop2介绍 HDFS概述 HDFS读写流程 1. Hadoop2介绍 Hadoop是Apache软件基金会旗下的一个分布式系统基础架构.Hadoop2的框架最核心的 ...
- 解析HetuEngine实现On Yarn原理
摘要:本文介绍HetuEngine实现On Yarn的原理,通过阅读本文,读者可以了解HetuEngine如何在资源使用方面融入Hadoop生态体系. 本文分享自华为云社区<MRS HetuEn ...
- Hadoop — Yarn原理解析
1. 概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台:而MapReduce等运算程序则相当运行于操作系统之上的应用程序. 2. YARN的重要概念 ...
- 【原创 Hadoop&Spark 动手实践 4】Hadoop2.7.3 YARN原理与动手实践
简介 Apache Hadoop 2.0 包含 YARN,它将资源管理和处理组件分开.基于 YARN 的架构不受 MapReduce 约束.本文将介绍 YARN,以及它相对于 Hadoop 中以前的分 ...
- yarn 原理
产生背景 直接源于MRv1在几个方面的缺陷 扩展性受限(NameNode,JobTracker设计为单一节点,内存容量有限) 单点故障 难以支持MR之外的计算 slot数目无法动态修改,Map slo ...
- 【Hadoop】YARN 原理、MR本地&YARN运行模式
1.基本概念 2.YARN.MR交互流程 3.源码解读
- YARN 原理简介
YARN 组件 参考:Spark on Yarn | Spark,从入门到精通 YARN 采用 Master/Slave结构 ,包含ResourceManager 和 NodeManager Reso ...
- 更快、更强——解析Hadoop新一代MapReduce框架Yarn(CSDN)
摘要:本文介绍了Hadoop 自0.23.0版本后新的MapReduce框架(Yarn)原理.优势.运作机制和配置方法等:着重介绍新的Yarn框架相对于原框架的差异及改进. 编者按:对于业界的大数据存 ...
随机推荐
- 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 ...
- Lexer的设计--上(3)
lexer的构造函数 有了上一节Token做铺垫, 可以开始设计lexer, 首先应该想到的是, 源代码是以文件流的格式传到编译器中的, 所以作为编译器的前段的第一个阶段, lexer必须负责处理输入 ...
- WPF中类似使用tab键功能,可以向上向下定位
原文:WPF中类似使用tab键功能,可以向上向下定位 private void tbYyrs_KeyUp(object sender, KeyEventArgs e) { UIElement elem ...
- mvn 命令在command prompt无法识别
Download maven from this website: https://maven.apache.org/download.cgi 解压binary包后放到一个位置,比如C:\apache ...
- 查看window端口占用并结束相关进程
启动cmd命令行 运行netstat –ano,可列出所有端口情况 根据被占用的端口号,比如8081,运行netstat -aon|findstr "8081",找到它对应的PID ...
- QDialog在hide()之后,就被销毁的原因
一路跟踪源码,关键就是这两句: int QDialog::exec() { Q_D(QDialog); if (d->eventLoop) { qWarning("QDialog::e ...
- Python写的嗅探器——Pyside,Scapy
使用Python的Pyside和Scapy写的嗅探器原型,拥有基本框架,但是功能并不十分完善,供参考. import sys import time import binascii from PySi ...
- SQLServer 订阅过期解决方法
原文:SQLServer 订阅过期解决方法 由于分发数据库执行一个较长的事务,达到了系统预定的72小时,导致了该订阅过期,数据库分发代理已不可再启用,提示错误如下: 错误信息:已将此(这些)订阅标记为 ...
- 分配粒度和内存页面大小(x86处理器平台的分配粒度是64K,内存页是4K,所以section都是0x1000对齐,硬盘扇区大小是512字节,所以PE文件默认文件对齐是0x200)
分配粒度和内存页面大小 x86处理器平台的分配粒度是64K,32位CPU的内存页面大小是4K,64位是8K,保留内存地址空间总是要和分配粒度对齐.一个分配粒度里包含16个内存页面. 这是个概念,具体不 ...
- 什么是OTC?
OTC(Over The Counter)非处方药物,我国卫生部医政司是这样定义的:它是消费者可不经过医生处方,直接从药房或药店购买的药品,而且是不在医疗专业人员指导下就能安全使用的药品,即不需要凭借 ...