YARN框架概述

news2024/12/23 10:47:31

Yarn 概述

  • Yarn概述
    • 对Yarn的需求
    • 简介
    • 变迁
      • YARN于MRv1的区别
        • MRv1
        • YARN介绍
  • YARN集群安装部署
    • 集群角色介绍
      • ResourceManager(RM)
      • NodeManager(NM)
      • 集群部署规划
    • YARN RM重启机制
      • 概述
      • **开启重启机制**
      • RM状态数据的存储介质
      • 开启
    • 后续正在学习:YARN HA高可用
  • YARN架构体系
    • 官方架构图
    • 抽象概念
      • 三大组件
        • RM
        • Node Manager
        • ApplicationMaster
      • Container容器
    • YARN 通信协议
        • 组成
        • 概述
  • YARN交互流程
    • YARN上引用类型
    • 整体概述


Yarn概述

对Yarn的需求

  • 可拓展性: 可以平滑的拓展至数万节点和并发的应用
  • 可维护性:保证集群软件的升级与用户应用程序完全解耦
  • 多租户:需要支持在同一集群中多租户并存,同时支持多租户间细颗粒度得共享单个节点
  • 位置感知:将计算转移至数据所在的位置
  • 高级群使用率:实现底层物理资源的高使用率
  • 安全和可审计的操作:继续以安全的、可审计的方式使用集群资源
  • 可靠性与可用性:具有高度可靠得用户交互、并支持高可用
  • 对编程模型多样化得支持:支持多样化的编程模型,需要严谨为不仅仅以MapReduce为中心
  • 灵活得资源模型:支持各个节点的动态资源配置以及灵活的资源模型
  • 向后兼容:保持现有的MapReduce应用程序得向后兼容性

简介

YARN(Yes Another Resource Negotiator,另一种资源协调者),是一种新的hadoop资源管理器。YARN是一个*通用*资源管理系统的调度平台,可为上层应用提供统一的资源管理和调度。他的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大的好处。

如何理解通用资源管理系统和调度平台

资源管理系统:集群的硬件资源,和程序运行相关比如说内存、CPU等

调度平台:多个程序同时申请资源如何分配?调度的规则(算法)

通用:不仅仅支持MapReduce程序,理论上支持各种计算程序,YARN不关心你在干什么,只关心你要调用资源,在有的情况下就给你,用完还回来即可。

可以把Hadoop YARN理解为相当于一个分布式的操作系统平台,而MapReduce等计算程序则相当于运行于操作系统之上的应用程序,YARN为这些程序提供运算所需的资源(内存、CPU等)。

Hadoop能有今天的地位,YARN可以说功不可没,因为有了YARN,更多计算框架可以接入到HDFS中,而不单单是MapReduce,正是因为YARN的包容性,使得其他计算框架能够专注于计算性能的提升。HDFS可能不是最优秀的大数据存储系统,但却是应用最广泛的大数据存储系统,YARN功不可没

image-20230511195239955

变迁

YARN于MRv1的区别

Hadoop从1到2的过程中,最大的变化就是拆分MapReduce,剥离出新的单独组件:YARN。Hadoop3系列整体架构和2一致

在Hadoop1中,MapReduce(MRv1)负责:数据计算、资源管理,身兼多职

在Hadoop2中,MapReduce(MRv2)负责数据计算,YARN负责资源管理

image-20230511200703734

MRv1

MRv1包括三个部分

运行时环境(JobTracker 和TaskTracker)、编程模型(MapReduce)、数据处理引擎(Map Task 和Reduce Task)

JobTracker负责资源和任务的管理和调度,TaskTracker负责单个节点的资源管理和任务执行。

MRv1将资源管理和应用程序管理两个部分混杂在一起,使得它在拓展性和容错性和多框架支持等方面存在明显的缺陷

image-20230511201447433

YARN介绍

MRv2重用MRv1中的编程模型和数据处理引擎,但是运行时环境(resourcemanager、nodemanager)被完全重写,由YARN来专管资源管理和任务调度。并且YARN将程序内部具体管理职责交给一个叫做ApplicationMaster的角色,自己专注于集群资源管理,成为了一个通用的资源管理系统

image-20230511201719162


YARN集群安装部署

集群角色介绍

Apache Hadoop YARN是一个标准的Master/Slave集群(主从架构),其中ResourceManager(RM)为MasterNodeManager(NM)为Slave,常见的是一主多从集群,也可以搭建RM的HA高可用集群

ResourceManager(RM)

RM是YARN中的主角色,决定系统中所有应用程序之间资源分配的最终权限,即最终的仲裁者。RM接受用户的作业提交,并通过NodeManager分配、管理各个机器上的计算资源,资源以Container形式给予,此外,RM还具有一个可插拔组件scheduler,负责为各种正在运行的应用程序分配资源,根据决策进行调度

image-20230511202825297

NodeManager(NM)

NM事YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源。NM根据RM命令,启动Container容器,监视容器的资源使用情况,并且向RM主角色汇报资源使用情况

集群部署规划

理论上YARN集群可以部署在任意机器上,但是实际上通常把NodeManager和DataNode部署在同一台机器上。(有数据的地方就可能会产生计算,移动程序的成本比移动数据的成本低)。作为Hadoop的与部分,通常会把YARN集群和HDFS集群一起搭建

详细内容:请见Hadoop分布式集群搭建

YARN RM重启机制

概述

ResourceManager负责资源管理和应用的调度,是YARN的核心组件,存在单点故障的问题。ResourceManager Restart重启机制是使RM在重启动时能够使YARN集群正常工作的特性,并且使RM的出现的失败不会被用户知道。重启机制不是自动帮助我们重启的意思,所以不能解决单点故障问题

不开启RM重启机制现象

如果RM出现故障重启后,之前的信息全部都将消失,正在执行的任务也会失败

我们先启动一个YARN进程,通过hadoop提供的一个测试程序来计算圆周率,然后我们快速的杀死这个线程然后在重启这个YARN进程

yarn jar hadoop-mapreduce-examples-3.3.1.jar pi 50 50

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SXRDyLPB-1683853833837)(https://kele-1305880580.cos.ap-beijing.myqcloud.com//blog/image-20230511210924406.png)]

然后我们快速杀死ResourceManager线程在通过YARN进行重启

但是结果如下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1iAtxBar-1683853833838)(https://kele-1305880580.cos.ap-beijing.myqcloud.com//blog/image-20230511211559922.png)]

直接提示找不到这个任务最后以报错结束运行

开启重启机制

两种实现:

  1. Non-work-preserving RM restart 不保留工作的RM重启,在Hadoop 2.4.0版本实现
  2. Work-preserving RM restart 保留工作的RM重启 在Hadoop 2.6.0版本实现

保留工作与不保留工作的区别

不保留工作RM重启机制只保存了application提交的信息和最终的执行状态,并不保存运行过程中的相关数据,所以RM重启后,会先杀死正在执行的任务,然后再重新提交,从0开始执行任务

保留工作RM重启机制保存了application运行中的数据状态,所以在RM重启之后,不需要杀死之前的任务,而是接着原来执行到的进度继续执行

不保留RM重启机制

当client提交一个application给RM使,RM会将该application的相关信息给存储起来,具体存储的位置可以在配置文件中指定的,可以存储到本地文件系统上,也可以存储到HDFS或者zookeeper中,此外RM也会保存application的最终状态信息(file、killed、finished),如果是在安全环境下运行,RM还会保存相关的证书文件。

当RM被关闭后,NodeManager 和Client由于发现连接不上RM就会不断的向RM发送消息,以便于能及时确认RM是否已经恢复正常,当RM重新启动,他会发送一条re-sync(重新同步)的命令给所有的NM和ApplicationMaster(后续简写AM),NM 收到重新同步命令后会杀所有正在运行的containers并重新向RM注册,从RM的角度来看,每台重新注册的NM跟一台跟一台新加入到集群的NM是一样的。

AM收到重新同步的命令后会自行将自己杀死,接下来RM会将存储的关于application的相关信息读取出来,将在RM关闭之前最终状态为正在运行的application重新提交

保留RM重启机制

与不保留工作不同的地方在于,RM会记录下container的整个生命周期的数据,包括application运行的相关数据、资源申请状况、队伍资源使用情况等信息。当RM重启之后,会读取之前存储的关于application的运行状态的数据,同时发送re-sync的命令,与第一种方式不同的是,NM在接收到重新同步的命令后并不会杀死正在运行的containers,而是继续运行containers中的任务,同时jiangcontainers的运行状态发送给RM,之后RM根据自己所掌握的数据重构container实例和相关的application运行状态,这样一来就实现了RM重启之后紧接着RM关闭时的任务状态继续执行。

RM状态数据的存储介质

RM重启机制本质上是将RM内部的状态信息写入到外部存储介质中,在RM启动时会初始化状态信息的目录,当Application运行时会将相关的状态写入到对应的目录下,如果RM发生故障或者重启,可以通过外部存储进行回复。RM状态存储的实现使RMStateStore抽象类,

开启

需要zookeeper进行操作

后续正在学习:YARN HA高可用


YARN架构体系

官方架构图

image-20230511214514100

image-20230511215620986

抽象概念

三大组件

ResourceManager(RM)
YARN集群中的主角色,决定系统中所有应用程序间资源分配的最终权限,即最终仲裁者,接受用户作业的提交,并通过NM分配、管理各个机器上的计算资源

NodeManager(NM)
YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源,根据RM命令,启动Container容器,监视容器的资源使用情况,并且向RM主角色汇报资源使用情况

ApplicationMaster(AM)
用户提交的每个程序均包含一个AM,应用程序内的老大,负责程序内部各个阶段的资源申请、监督程序的运行情况。

RM

RM 主要由两个组件组成:调度器(Scheduler)和应用程序管理器(Applications Manager ,AMS)

调度器(Scheduler)
根据容量、队列等限制条件(如每隔队列分配一定的资源,最多执行一定数量的作业等),将数据中的资源分配给各个正在运行的应用程序

应用程序管理器(Applications Manager)
负责整体管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动 它等

Node Manager

NodeManager是每个节点上资源和任务管理器

  • 一方面他会定时向RM汇报本节点上资源使用情况和各个Container的运行状态
  • 另一方面,他接受并处理来自AM的Container启动/停止等各种请求

ApplicationMaster

职责

  1. 与RM调度器协商以获取资源(用Container表示)
  2. 将得到的任务进一步分配给内部的任务
  3. 与NM通讯以启动/停止任务
  4. 监控所有任务运行状态,并在任务运行时重新为任务申请资源以重启任务

当前YARN自带两个AM的实现

  1. 一个用于演示AM编写方法的案例程序distributedshell
  2. 另一个是运行MapReduce应用程序的AM-MRAppMaster

Container容器

Container使YARN中抽象资源,它封装了某个节点上多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是Container表示的,YARN回味每个任务分配一个Container,且该任务只能使用Container中描述的资源,需要注意的是,Container不同于MRv1的曹魏,他是一个动态资源划分单位,是根据应用程序的需求动态生成的

当下YARN仅支持CPU和内存两种资源,底层使用了轻量级资源隔离机制Cgroups进行隔离

image-20230511221924123

YARN 通信协议

概述

分布式环境下,需要涉及机器跨网络通信,YARN底层使用RPC协议实现通讯。RPC是远程过程调用的缩写形式,基于RPC进行远程调用就像本地调用一样。在RPC协议中,通信双方有一端时Client,另一端为Server,且Client总是主动连接Server的,因此YARN实际上采用的是拉式(pull-based)通信模型

image-20230511223530226

组成

  • JobClient(作业提交客户端)与RM之间的协议– ApplicationClientProtocol

    客户端通过该RPC协议提交应用程序、查询应用程序状态

  • Admin与RM之间的通信协议 – ResourceManagerAdministrationProtocol

    Admin通过该RPC协议更新YARN集群系统配置文件,比如说黑白名单、用户队列权限等

  • AM与RM之间的协议–ApplicationMasterProtocol

    AM通过该RPC协议想RM注册和撤销自己,并为各个任务申请资源

概述

  • AM与NM之间的协议 – ContainerManagementProtocol

    AM通过该RPC要求NM启动或者停止Container,获取各个Container的使用状态等信息。

  • NM与RM之间的协议

    NM通过该RPC协议向RM注册,并定时发送心跳信息汇报当前节点的使用情况和Container运行情况

YARN交互流程

YARN上引用类型

  • 短应用程序:指一定时间内(可能是秒级、分钟级或者小时级,尽管天级别或者更长时间的也存在,但是非常少)可运行完成并正常退出的应用程序,比如MapReduce作业、Spark作业等
  • 长应用程序:之不出意外,永不终止运行的应用程序,通常是一些服务,比如说Storm Service(主要包括Nimbus和Supervisor两类服务),Flink(包括JobManager和TaskManager 两类服务)等,而它们本身作为一个框架,提供了编程接口供用户使用

尽管这两类应用程序作用不同,一类直接运行数据处理程序,一类用于部署服务(服务之上在运行数据处理程序),但是在YARN上运行的流程是相同的

整体概述

当用户向YARN提交一个应用程序后,YARN将分为两个阶段运行该应用程序。
第一阶段是启动ApplicationMaster
第二个阶段是由ApplicationMaster创建应用程序,为他申请资源,并监控他的整个运行过程,知道运行完成。

MR提交YARN交互流程

  1. 用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等
  2. ResourceManager为该应用程序分配第一个Container,并与对应的NodeManager通信,要求他在这个Container中启动应用程序的ApplicationMaster
  3. ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后他将为各个任务申请资源,并监控它的运行状态,直到运行结束,重复4~7步骤即可
  4. ApplicationMaster通过RPC协议向ResourceManager申请和领取资源
  5. 一旦ApplicationMaster申请到资源后,便于对应的NodeManager通信,要求他启动任务
  6. NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写道一个脚本中,通过运行该脚本启动任务
  7. 各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重启任务,在应用程序运行过程中,用户可以随时通过RPC向ApplicationMaster查询应用程序的运行状态
  8. 应用程序运行完成后,ApplicationMaster向ResourceManager注册并关闭自己

image-20230512084031265

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/516281.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DNDC模型

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现,“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到,要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时,提到要把减污降碳协同增效作为促…

harbor(docker仓库)仓库部署

harbor仓库部署 1. harbor概述2. harbor主要功能3. harbor架构介绍4. Docker Compose4.1 compose简介4.2 docker-compose工具命令 5. harbor部署5.1 部署Docker Compose5.2 部署harbor5.3 部署harbor开机自启 6. harbor应用6.1 配置客户端访问harbor6.2 harbor的web管理界面 1.…

炸裂!Hugging Face 发布重磅更新,人手一个 AutoGPT!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! Hugging Face,作为 AI 开源圈最为知名的「网红」创业公司,成立仅几年,便在 GitHub 开源了诸多实用开源项目,受到了不少开发者的赞赏。 其中影…

中小学智慧校园平台电子班牌系统源码的应用

智慧校园云平台电子班牌系统源码 智慧班牌系统是专门为学校打造的智能信息展示平台,为学校、教师、学生、家长创造一个学习成长交流的共享平台。主要用于显示班级信息、 班级风采、校园文化、课程表、校园活动通知、家校互联等。以图片、音视频、文字、动画、文档等…

【ADS867x】14 位 500kSPS 4/8 通道 ADC 简介及驱动应用示例

器件特性 具有集成模拟前端的 14 位模数转换器 (ADC)具有自动和手动扫描功能的 4 通道、8 通道多路复用器通道独立可编程输入: 10.24V、5.12V、2.56V、1.28V、0.64V10.24V、5.12V、2.56V、1.28V 5V 模拟电源:1.65V 到 5V I/O 电源恒定的阻性输入阻抗&am…

Android 14 快速适配要点

随着 Google I/O 2023 发布的 Android beta2 ,预计 Android 14 将在2023年第三季度发布,目前看整体需要适配的内容已经趋向稳定,那就根据官方文档简单做个适配要点总结吧。 如何做到最优雅的版本适配?那就是尽可能提高 minitSdkVe…

详细版易学版TypeScript - 类型声明:字符串数字null布尔undefined数组any对象void类型推断联合类型

根据官方 TypeScript 的注意事项,建议不要使用 Number、String、Boolean、Symbol 或 Object。 ts各类型声明的代码如下: 一、字符串类型 let str: string hello; str ts; 二、数字类型 let num: number 123; num 456; 三、布尔类型 let flag: boolea…

C语言实现队列--数据结构

😶‍🌫️Take your time ! 😶‍🌫️ 💥个人主页:🔥🔥🔥大魔王🔥🔥🔥 💥代码仓库:🔥🔥魔…

No.065<软考>《(高项)备考大全》【专项3】《论文》

《论文》 1 论文部分相关1.1 考试相关1.2 考试核心相关1.3 历年考试分析1.4 复习建议1.5 评分标准1.5.1 评分的几个方面1.5.2 不及格的几种类型1.5.3 扣分项1.5.4 加分项 1.6 时间进度安排1.7 如何准备 2 必背核心知识 - 10大领域47个过程3 论文写作技巧3.1 论文架构3.2 论文题…

SpringBoot——引导类的简单介绍

简单介绍: 之前我们就说到过引导类,之不过当时就是简单的说了一下这个名字,让大家记住我们运行的程序的学名叫做引导类,但是我们并没有进入看过,介绍过它的作用,这次我们就来简单的介绍一下这个类的作用。…

[NLP] SentenceTransformers使用介绍

SentenceTransformers 是一个可以用于句子、文本和图像嵌入的Python库。 可以为 100 多种语言计算文本的嵌入并且可以轻松地将它们用于语义文本相似性、语义搜索和同义词挖掘等常见任务。 该框架基于 PyTorch 和 Transformers,并提供了大量针对各种任务的预训练模型…

STEP7-MicroWin SMART中修改变量注释的具体方法(绝对寻址+符号寻址)

STEP7-MicroWin SMART中修改变量注释的具体方法(绝对寻址+符号寻址) 如下图所示,我们可以在符号表中定义变量的符号名称以及注释信息, 使用时需注意以下事项: 1.在 STEP 7-Micro/WIN SMART 软件中,可以建立多个符号表,但不允许将相同的符号名多次用作全局符号赋值,在单…

1707_Python中的多成员处理

全部学习汇总: GreyZhang/python_basic: My learning notes about python. (github.com) 欢迎路过的YUAN类朋友们,希望我们能够相互交流共同成长。如有错误或者不足希望及时指点指出,不胜感激!以下是我的联系方式: E…

Kali-linux识别活跃的主机

尝试渗透测试之前,必须先识别在这个目标网络内活跃的主机。在一个目标网络内,最简单的方法将是执行ping命令。当然,它可能被一个主机拒绝,也可能被接收。本节将介绍使用Nmap工具识别活跃的主机。 网络映射器工具Nmap Nmap是一个…

JavaScript经典教程(七)-- JavaScript中级

197:in、预解析、变量提升、对象引用、Date对象 1、预解析 即,把var的变量在,作用域下,提前; (1)JS代码运行原理 预先解析,JS第一次解析代码叫预解析。 JS本身会解析两次代码&a…

vue非单文件组件

非单文件组件指的是:一个文件中包含了多个组件。 Vue 中使用组件的三大步骤:1. 创建组件、2. 注册组件、3. 使用组件。 组件使用流程【第一步:创建组件】 利用 Vue.extend() 方法创建组件: // 第一步:创建 frameHead 组件 cons…

前端015_标签模块_删除功能

标签模块_删除功能 1、需求分析2、EasyMock 添加模拟接口3、Api 调用接口4、测试1、需求分析 当点击删除按钮后, 弹出提示框。点击确定后,执行删除并刷新列表数据 确认消息弹框参考:https://element.eleme.cn/#/zh-CN/component/message-box#que-ren-xiao-xi 2、EasyMock …

【AUTOSAR】【以太网】TCPIP

目录 一、概述 二、约束和假设 三、依赖模块 3.1 EthIf 3.2 EthSM 3.3 SoAd 3.4 KeyM 3.5 CSM 四、功能说明 4.1 系统扩展性 4.2 IPv4 4.2.1 IPv4 4.2.2 ARP 4.2.3 Auto-IP 4.2.4 ICMP 4.3 IPv6 4.4 IPSec 4.5 基于IP的协议 4.5.1 本地地址表 4.5.2 UDP 4…

音视频八股文(12)-- ffmpeg 音频重采样

1重采样 1.1 什么是重采样 所谓的重采样,就是改变⾳频的采样率、sample format、声道数等参数,使之按照我们期望的参数输出。 1.2 为什么要重采样 为什么要重采样?当然是原有的⾳频参数不满⾜我们的需求,⽐如在FFmpeg解码⾳频…

【C++初阶】类和对象(四)

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C初阶 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C初阶】…