04-分布式资源管理系统YARN

2023-11-19

 

目录

一,YARN简介

1,YARN的由来

2,什么是YARN

二,YARN原理

1,系统架构

1.1 角色分工

1.2 设计思想

1.3 工作机制

1.4 集群部署

2,YARN高可用

三,YARN资源调度策略

1,FIFO调度器

2,容量调度器

3,公平调度器


文章内容来自:南京大学 / 星环科技课程,大数据理论与实践课程Ⅰ

对细节部分引用其他网络资源进行补充。

一,YARN简介

1,YARN的由来

Hadoop 1.x中的MapReduce存在先天缺陷:

  • 既是计算框架,又是资源管理系统;
  • 仅把Task数量看作资源,没有考虑CPU和内存;
  • 扩展性较差,集群规模上限4K;
  • 源码难于理解,升级维护困难;

 

 

为了让MR专注于计算,所以引入了YARN来负责具体的资源管理,从而提高性能。

2,什么是YARN

YARN,Yet Another Resource Negotiator,另一种资源管理器

设计目标:聚焦资源管理、通用(适用各种计算框架)、高可用(元数据和Master高可用)、高扩展(与HDFS同步扩展)、高容错(计算容错)

YARN的基本思想是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离,主要方法是创建一个全局的ResourceManager(RM)和若干个针对应用程序的ApplicationMaster(AM)。ApplicationMaster 承担了以前的 TaskTracker 的一些角色,ResourceManager 承担了 JobTracker 的角色。

二,YARN原理

1,系统架构

1.1 角色分工

四种角色:ResourceManager、ApplicationMaster(作业管家)、NodeManager、Client

1, Active ResourceManager(ARM)

  • 活动资源管理节点(Master / 集群唯一)
  • 统一管理集群计算资源
  • 负责启动ApplicationMaster、作业指派和监控
  • 将资源按照一定的调度策略分配给作业
  • 接收NodeManager的运行状况和资源上报信息

2,Standby ResourceManager(SRM)

  • 热备资源管理节点(允许多个)
  • 主备切换
  • -AR宕机后,经过Master选举和状态信息恢复,SRM升级为ARM
  • -重启AM,杀死所有运行中的Container

3,ApplicationMaster(AM)

作业管家

  • 一对一管理:每个作业实例都由一个专职的AM来管理
  • 作业解析:将Job解析为由若干Task组成的有向无环图
  • 申请资源:向RM申请Job运行所需的计算资源
  • 任务调度和监管:向NM申请分配Container和启动Task,同时监测Task的运行状态和进度
  • 反馈:向Client反馈Job的运行状态和结果

实现方式

  • YARN缺省提供MapReduce的AM实现,但其他计算框架需自备作业管理组件(如Spark Driver)
  • 采用基于事件驱动的异步编程模型,由中央事件调度器统一管理所有事件
  • AM是一种事件处理器,在中央事件调度器中注册,这样可实现解耦,以确保YARN的通用性

4,NodeManager(NM)

  • 计算节点(Slave / 高扩展)
  • 管理单个节点的资源
  • 管理Container的生命周期(从创建到销毁的全过程)
  • 向ResourceManager汇报运行状况和资源使用情况

5,Container

  • 容器:对进程相关资源的封装,对资源的抽象,分配资源即分配Container
  • 分为两类:运行AMContainer 、运行TaskContainer

1.2 设计思想

将JobTracker的资源管理和作业管理职能分离开来

1.3 工作机制

基本流程

  1. Client向RM提交编译好的分布式程序(Job)
  2. RM接收Job后,分配一个NM来启动AM,并将Job指派给AM,由它来一对一管理
  3. AM将Job解析为一个由若干Task组成的有向无环图DAG,并从NameNode获取Task输入数据的存储位置(即Block存储位置),然后向RM申请计算资源
  4. 根据AM提交的Task Set及其对应的Block存储位置,RM为Job分配计算资源,即为每个Task分配一个NM List,并返回给AM(计算跟着数据走:NM所在Server的DataNode上存储了Task的输入Block)
  5. 根据Task DAG和NM List,AM按照并行/串行次序将Task提交给NM
  6. NM接收Task,验证身份后,启动Container,运行Task,并向AM汇报运行状态和进度
  7. 在Job运行期间,AM向Client反馈Job运行进度和状态,并返回最终结果

 

1.4 集群部署

 计算跟着数据走(NodeManager和DataNode在一个服务器上,这样才能做到计算跟着数据走)

2,YARN高可用

基于ZK的元数据高可用

  • RM状态
  • Job状态和Token(访问身份验证)

基于ZK的RM高可用(主备切换)

  • Master选举
  • 恢复RM的原有状态信息
  • 重启AM,并杀死所有运行中的Container(task太多了,而且实时变化,不好存储。所以AM挂掉之后,job相关的task要全部kill掉,重新执行)

计算高可用

  • Task失败后,AM会把其调度到其他NM上重新执行(默认4次)
  • Job失败后,RM会在其他NM上重启AM(默认2次)

 

三,YARN资源调度策略

1,FIFO调度器

调度策略

  • 将所有作业放入一个队列,先进队列的先获得资源,排在后面的作业只能等待

缺点

  • 资源利用率低,无法交叉运行作业
  • 灵活性差,如紧急作业无法插队,耗时长的作业拖慢整个队列

 

2,容量调度器

核心思想

  • 提前做预算,在预算指导下分享集群资源

调度策略

  • 集群资源由多个队列分享,并行度即队列个数
  • 每个队列都要预设资源分配比例(提前做预算,预算是指导原则)
  • 空闲资源优先分配给“实际资源/预算资源”比值最低的队列。比如有两个队列,队列A中资源占用了80%,而队列B中只占用了10%,则优先分配给队列B(保持弹性)
  • 队列内部采用FIFO调度策略

特点

  • 层次化的队列设计:子队列可使用父队列资源
  • 容量保证:每个队列都要预设资源占比,防止资源独占
  • 弹性分配:空闲资源可以分配给任何队列,但当多个队列争用时,会按比例进行平衡
  • 支持动态管理:既可以动态调整队列的容量、权限等参数,也可以动态增加、暂停队列
  • 访问控制:用户只能向自己的队列中提交作业,不能访问其他队列
  • 多租户:多用户共享集群资源

 

3,公平调度器

调度策略

  • 多队列公平共享集群资源
  • 通过平分的方式,动态分配资源,无需预先设定资源分配比例,即“不提前做预算、见面分一半、实现绝对公平”
  • 队列内部可配置调度策略:FIFO、Fair(默认)

资源抢占

  • 终止其他队列的作业,使其让出所占资源,然后将资源分配给占用资源量少于最小资源量限制的队列(通过杀富济贫保持弹性)

队列权重

  • 当队列中有作业等待,并且集群中有空闲资源时,每个队列可以根据权重获得不同比例的空闲资源(通过政策倾斜保持弹性)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

04-分布式资源管理系统YARN 的相关文章

  • C++中的继承

    目录 1 继承的概念及定义 1 1继承的概念 1 2 1继承格式 1 2 2继承关系和访问限定符 1 2 3继承基类成员访问方式的变化 2 基类和派生类对象赋值转换 3 继承中的作用域 同名成员 同名函数 4 派生类的默认成员函数 5 继承

随机推荐

  • 感冒交叉感染

    给没有感染的家人服用板蓝根颗粒 窗户每天要打开同风至少在半小时 平时可以用84消毒液拖地或清洗抹布等 病人的生活用品单方 如果条件允许可以按消毒灯 平时让家人多喝水 适当运动 感染者要带口罩 餐具隔离 室内用醋蒸薰消毒 经常开窗通风 未感者
  • QRCode简单生成二维码

    QRCode简单生成二维码 1 导包 2 jsp的body里 div div
  • 通讯录_Php通讯录系统

    点击上面 蓝字 关注我们 Php通讯录系统 address list 主页 通讯录系统 管理员登录 登录 注册 后台 通讯录系统 编辑 代码 include conn conn php url SERVER REQUEST URI url
  • Maven settings.xml文件中各配置项的详细说明

    1 Maven settings xml文件中各配置项的说明 localRepository 本地仓库 指定Maven本地仓库的路径 默认情况下 它位于用户主目录下的 m2文件夹中
  • Windows系统设置每天自动备份指定文件并自动删除七天前的文件(脚本+Windows任务计划)

    Windows系统设置每天自动备份指定文件并自动删除七天前的文件 脚本 Windows任务计划 在生活中和工作中有时候为了避免电脑宕机导致文件丢失常常会使用一些方式去备份文件 今天小编给大家介绍一个方法 用于自动备份指定文件 并删除N天前的
  • 射击游戏c语言源码,射击游戏 (C++代码)

    解题思路 路 一开始不理解假定A和B都足够聪明 采取让自己获胜概率尽量高的策略 你的任务是计算出A获胜的概率 其实就是说在任意一种方式下都是取得胜利的最大概率 所以要从所有可能的情况 1 6行 从左or从右 里取一个最大的 那么直接去dfs
  • Redis 的五种基本类型(实战篇)

    良心公众号 关注不迷路 Redis 是一个速度非常快的非关系型数据库 它可以存储键 key 与 5 种不同类型的值 value 之间的映射 可以将存储在内存的键值对数据持久化到硬盘 可以使用复制特性来扩展读性能 还可以使用客户端分片来扩展性
  • 【python爬虫】爬取淘宝网商品信息

    相信学了python爬虫 很多人都想爬取一些数据量比较大的网站 淘宝网就是一个很好的目标 其数据量大 而且种类繁多 而且难度不是很大 很适合初级学者进行爬取 下面是整个爬取过程 第一步 构建访问的url 构建访问的url goods 鱼尾裙
  • 基于ensp的校园无线网络仿真实验

    写在前面 本项目是我们大三的一堂实践课作业内容 之前发过一次但是瞬间反响很好所以怕被抄袭删掉了555 现在成绩也出了尘埃落定发出来和大货分享分享qwq 当然还是仅供学习参考 禁止洗稿噢 摘要 本论文研究了一个基于有线和无线网络的校园网项目的
  • Jmeter完整的性能测试流程图,接口测试步骤

    第零 300G全套最新软测视频教程分享 链接 https pan baidu com s 17jkyGn Wm zC6QQLkWjrsw 提取码 o94n 第一 测试相关系统准备 1 验证基本系统功能后 性能测试在哪个阶段开始介入 通常 最
  • C++使用protobuf实现序列化与反序列化

    一 protobuf简介 1 1 protobuf的定义 protobuf是用来干嘛的 protobuf是一种用于 对结构数据进行序列化的工具 从而实现 数据存储和交换 主要用于网络通信中 收发两端进行消息交互 所谓的 结构数据 是指类似于
  • linux 目录大小 4096,Linux 块与文件大小

    EXT2格式 块大小为1024字节的话 单一文件最大容量是16GB 块大小为4096字节的话 单一文件最大容量为2TB 如果你愿意 看看kernel源代码吧 位置 fs ext2 supper c 看这个函数 C C code Maxima
  • FTP、SFTP文件下载内容校验

    描述 从FTP SFTP下载的文件做MD5码校验 文件名和MD5码值存放在表格里 表格位置在FTP SFTP服务器上 os模块只能遍历本地目录 文件 需要先连接FTP SFTP服务器 将表格下载到本地localpath 再将localpat
  • mysql 添加索引后 在查询的时候是mysql就自动从索引里面查询了。还是查询的时候有单 独的参数查询索引?

    MYSQL在创建索引后对索引的使用方式分为两种 1 由数据库的查询优化器自动判断是否使用索引 2 用户可在写SQL语句时强制使用索引 下面就两种索引使用方式进行说明 第一种 自动使用索引 数据库在收到查询语句后会查看where语句后面的查询
  • 如何将自己造的轮子,发布npm包,并使用

    参考该篇文章 实例创建自己的npm包 发布npm包并使用 https segmentfault com a 1190000039766438
  • 复杂曲面建模_Rhino 7

    Rhino 和 Sketchup之间的 斗争 已经持续了好长时间 双方基本态度是 呵 你很好用 但我也可以啊 这种争议的底层原因是因为他们无法互通 我们并没有听说过Rhino和Revit有矛盾 也没听说过Sketchup和AutoCAD有什
  • C++系列目录

    基础语言篇 C 数据类型 C位操作 C预编译处理 C指针 C结构体与枚举类型 C 函数 C 虚函数 C 容器与算法 C 类 C I O处理 C 重载操作符与转换 模板与泛型 C C 编译和调试 C C 动态链接 C C 通用MakeFile
  • element表格默认选中

    场景 选中表格多选框后 重新返回这个标签页 已经选择的需要默认选中 但是重新返回后 并没有选中
  • 流计算框架 Flink 与 Storm 的性能对比

    概述 将分布式实时计算框架 Flink 与 Storm 进行性能对比 为实时计算平台和业务提供数据参考 一 背景 Apache Flink 和 Apache Storm 是当前业界广泛使用的两个分布式实时计算框架 其中 Apache Sto
  • 04-分布式资源管理系统YARN

    目录 一 YARN简介 1 YARN的由来 2 什么是YARN 二 YARN原理 1 系统架构 1 1 角色分工 1 2 设计思想 1 3 工作机制 1 4 集群部署 2 YARN高可用 三 YARN资源调度策略 1 FIFO调度器 2 容