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

一、可以将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. JAVASCRIPT高程笔记-------JSON与AJAX

    json对象——语法 简单值:与JS相同语法,可以是字符串,数值,布尔值,null:但不支持undefined 对象: 复杂数据类型,表示一组有序的键值对,键值对的值可以是简单数据,也可以是复杂数据 ...

  2. SICP 1.6-1.8

    1.6由于scheme应用序求值的性质,该函数会陷入循环(一直计算 improve guess x) 1.7 值过小,0.001这个精度远远不够... 值过大,由于浮点数精度有限,(比如使用IEEE7 ...

  3. 【std::regex】C++文件路径正则表达式

    今天代码中遇到使用正则表达式匹配一个文件路径的问题,需要验证传入的文件路径是否合法,学习了简单的正则表达式的写法后,简单写了如下代码,在网上找了一些在线测试正则表达式的网站,测试可以通过. std:: ...

  4. Win8MetroC#数字图像处理--2.2图像二值化函数

    原文:Win8MetroC#数字图像处理--2.2图像二值化函数 [函数代码] /// <summary> /// Binary process. /// </summary> ...

  5. php 如何利用 soap调用.Net的WebService asmx文件

    原文:php 如何利用 soap调用.Net的WebService asmx文件 最近,帮一个同行测试用.net写的WebService接口,C#调用通过,现在需要测试一下php版本对它的调用,经过各 ...

  6. 卸载win10内置windows app的方法

    原文:卸载win10内置windows app的方法 2015年,微软推出了windows10操作系统,其以漂亮的界面.良好的操作方式.方便的推送升级迅速获得了好多人的好评,因此,好多同学都换了win ...

  7. csdn token

    http://download.csdn.net/download/pp_haitun/9614126 http://dl.download.csdn.net/down11/20160826/28b9 ...

  8. Linux常用实用命令

    Linux是我们开发人员必不可少的系统,也是经常接触到的.然而,Linux命令比较多,有些不常用也难记住.那么,我们如何更高效的使用Linux命令,而又不必全面地学习呢?今天就给大家分享一下我在开发过 ...

  9. 高性能高并发网站架构,教你搭建Redis5缓存集群

    一.Redis集群介绍 Redis真的是一个优秀的技术,它是一种key-value形式的NoSQL内存数据库,由ANSI C编写,遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Val ...

  10. Elasticsearch的使用

    我这边是以elasticsearch-2.4.3为例:引入maven <dependency> <groupId>org.elasticsearch.client</gr ...