分布式场景下,Apache YARN、Google Kubernetes 如何解决资源管理问题?

news2024/10/6 18:21:33

所有的资源管理系统都需要解决资源的有效利用、任务的有效响应、调度策略的灵活配置这三个最基本问题。那么在分布式的场景下,YARN和Kubernetes是怎么解决的呢?本篇进行介绍。

— Apache YARN 

YARN全称为(Yet Another Resource Negotiator),是一个集群共享的调度框架,有良好的可伸缩性,以及调度器本身有非常高的可靠性。YARN的架构如下图所示,其中ResourceManager控制整个集群,并管理应用程序对基础计算资源的分配。它将各个资源部分(计算、内存、带宽等)安排给基础NodeManager(YARN 的每节点代理)。ResourceManager还与 Application Master一起分配资源,与NodeManager一起启动和监视它们的基础应用程序。在此上下文中,Application Master承担了以前的TaskTracker的一些职责,ResourceManager承担了 JobTracker 的角色。

Application Master管理一个在YARN内运行的应用程序的每个实例,并负责协调来ResourceManager的资源,并通过 NodeManager监视容器的执行和资源使用(CPU、内存等的资源分配)。从YARN 角度讲,Application Master 是用户代码,因此存在潜在的安全问题。NodeManager管理一个YARN集群中的每个节点。NodeManager提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。NodeManager管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。Container是YARN中资源的抽象,封装了某节点上一定量的资源(内存,CPU),Container的运行由Application Master向资源所在的NodeManager发起。

一个MapReduce Job的调度过程如下图所示,一般会包含提交Job、启动Application Master、请求资源需求、通过后通过Container来进行数据处理这四步。这个流程也同样适用于Spark、Flink等计算引擎。通过YARN的这套资源管理体系,所有的中短期的计算任务都可以有效的得到统一的管理与调度。

调度能力是YARN的核心能力,YARN社区一共提供了FIFO、Fair和Capacity三种调度模型,用户也可以继承ResourceScheduler的接口实现自定义的调度器。FIFO Scheduler顾名思义是最简单的调度器,提交的作业按照提交时间先后顺序或者根据优先级次序将其放入线性队列相应的位置,在资源调度时,按照队列的先后顺序、先进先出地进行调度和资源分配。这种调度器过于简单,在实际的生产中,应用不是很多,毕竟需要调度的作业是有不同的优先级的。

在一些多用户的场景下,如大型集团每天夜间通过不同用户运行不同应用需要的批处理数据加工任务,应用的数量可能是数十个之多,集群资源在用户之间分配的公平性就比较重要。为了应对多租户的需求,社区推出了Capacity Scheduler,让不同的组织使用各自的资源,相互之间不影响,同时提高整个集群的利用率和吞吐量。Capacity Scheduler将资源分为多个队列,每个队列分配一部分资源,不同组织或用户的应用运行在其各自的队列中,从而做到资源隔离。在一个情况允许的情况下,为了提升集群吞吐,也允许队列之间的资源抢占。

Fair Scheduler将资源划分到多个资源池中,每个资源池设定资源分配最低保障和最高上限,管理员也可以指定资源池的优先级,优先级高的资源池将会被分配更多的资源,当一个资源池有剩余时,可以临时将剩余资源共享给其他资源池。Fair Scheduler先将用户的任务挂载到如下图的树形队列的叶子节点上,等待后续的资源调度。每个调度周期开始后,Scheduler选择集群中的一个节点,从树形队列的根节点出发,每层队列都按照按照作业的优先级或者根据公平策略来选择一个子队列,最后在叶子节点上按照公平策略来选择一个App,然后为这个App在对应的节点上分配适配的资源从而开始计算任务。

为了更好的支持生产需求,Fair Scheduler还支持抢占式调度,如果某个资源池长时间未能分配到公平共享量的资源,调度器则会杀死过多分配资源的资源池的任务,以腾出资源并分配到这个资源池中供对应的任务调度。此外,它还提供了一个基于任务数目的负载均衡机制,从而将系统任务尽可能均衡的分配到各个节点上。

— Google Kubernetes 

Kubernetes是Google的开源项目,用来管理Docker集群, 继承了Borg的优点,实现了编排、部署、运行以及管理容器应用,下图是Kubernetes的总体架构。Kubernetes提供资源池化管理,可以将整个集群内的CPU、GPU、内存、网络和硬盘等资源抽象为一个资源池,可以根据应用的资源需求灵活的根据资源池中的实时资源情况进行调度;Kubernetes包含一个统一的调度框架,可以管理最多数千个服务器和数万个容器,同时提供插件化的接口让第三方来定制和扩展新的调度系统;此外Kubernetes支持通过ConfigMap等方式来动态的调整应用配置,从而具备动态调配的基础能力。我们将基于这些基础技术来开发支持复杂应用平台的调度系统。

 

关于Kubernetes的详细介绍,可以查看往期文章:Docker和Kubernetes的前世今生(下)

— 小结

本篇介绍了两个分布式资源管理技术YARN和Kubernetes。开源社区从2018年开始,多个项目如Spark、Flink、Tensorflow等都开始从YARN转向基于Kubernetes的管理和调度。长期上看,作为Hadoop集群的资源管理系统,YARN非常有效的完成了其技术价值,但受限于其架构设计,很难往一个通用的数据中心调度系统演进。星环科技在2017年已经实现内部大数据平台从YARN切换到Kubernetes,下一篇将从存储、计算、资源调度等方面介绍星环大数据技术体系。

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

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

相关文章

OSPF开放式最短路径优先协议

目录标题OSPF协议OSPF的数据包---5种OSPF的状态机OSPF的工作过程OSPF的基本配置关于ospf协议从邻居建立成为邻接的条件ospf的接口网络类型OSPF协议 是是无类别链路状态型IGP协议;由于其基于拓扑进行更新收敛,故更新量会随着拓扑的变大而呈指数上升&…

处理CSV(python)

处理CSV(python)简介1. CSV和Python简介2. 文章内容简介一、用csv模块读取和写入CSV文件1. CSV模块2. 示例二、用pandas库读取和写入CSV文件1. pandas2. 示例三、处理CSV文件中的特殊情况1. 特殊情况及处理方法2. 示例简介 1. CSV和Python简介 CSV是一…

动态内存管理--从动态内存分配函数开始和你一起了解

目录前言1.为什么存在动态内存分配2.动态内存函数的介绍2.1malloc函数和free函数2.2calloc函数2.3realloc函数3.常见的动态内存错误3.1对NULL指针的解引用操作3.2对动态开辟空间的越界访问3.3对非动态内存开辟的内存使用free释放3.4使用free释放一块动态内存的一部分3.5对同一块…

【致敬未来的攻城狮计划】— 连续打卡第三天:欲速则不达,今天是对RA2E1 基础知识的补充学习。

系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 文章目录 目录 系列文章目录 文章目录 前言 一、RA是什么? 二、RA特点…

RHCE——shell脚本练习

一.实验要求 1、判断web服务是否运行(1、查看进程的方式判断该程序是否运行,2、通过查看端口的方式判断该程序是否运行),如果没有运行,则启动该服务并配置防火墙规则。 ​2、使用curl命令访问第二题的web服务&#xff…

Kafka的历史版本对应SpringBoot版本

截至目前(2023年),Kafka的最新版本是2.9.0,发布于2022年11月30日。Kafka的历史版本可以在Kafka官方网站的下载页面中找到。Kafka从0.8版本开始发布,经历了多个版本的迭代和升级。以下是一些比较重要的Kafka版本及其发布…

Python实现哈里斯鹰优化算法(HHO)优化Catboost回归模型(CatBoostRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 2019年Heidari等人提出哈里斯鹰优化算法(Harris Hawk Optimization, HHO),该算法有较强的全…

【LeetCode】剑指 Offer 52. 两个链表的第一个公共节点 p253 -- Java Version

题目链接:https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/ 1. 题目介绍(52. 两个链表的第一个公共节点) 输入两个链表,找出它们的第一个公共节点。 如下面的两个链表: 在节点…

基于微信小程序开发的“校园帮”系统

基于微信小程序开发的“校园帮”系统【毕业论文,源码】 本系统使用了java和mysql结合的结构开发了微信小程序应用,系统中所有和数据库有关系的操作都通过一个通用类来实现,大大提高了代码的耦合性,当数据库类型等信息变化后直接修…

【剑指offer|6.寻找峰值】

0.寻找峰值 关键点: 返回任意一个峰值的下标即可nums[-1]nums[n]负无穷 输入:nums [1,2,3,1] 输出:2 解释:3 是峰值元素,你的函数应该返回其索引 2 1.傻瓜编程(纯属玩乐) class Solution { public:int findPeakElement(vector&l…

普通人在家就能用ChatGPT轻松月赚$5000美金的方法

太震撼了,这简直就是下个世纪才应该出现的产品,突然之间我感觉就像人类,刚刚发明了电灯一样,一切都要变了,而且变的速度太快,让我都觉得有点茫然了,绝对就是技术大爆炸。今天这篇文章我想通过ch…

React 的源码与原理解读(六):reconcileChildren 与 DIFF 算法

写在专栏开头(叠甲) 作者并不是前端技术专家,也只是一名喜欢学习新东西的前端技术小白,想要学习源码只是为了应付急转直下的前端行情和找工作的需要,这篇专栏是作者学习的过程中自己的思考和体会,也有很多参…

常年不卷,按时下班,工作能力强,同事求助知无不言,不扯皮,不拉帮结派,这样的职场清流竟然被裁掉了!...

在职场上,你永远想不到什么样的员工会被优化,比如下面这位:常年不卷,按时下班,工作很专业,同事问什么都回答,不扯皮,不拉帮结派,简直是职场清流。在上个月竟然被优化了&a…

一分钟腾讯云轻量应用服务器性能评测(慎入坑)

腾讯云轻量应用服务器性能评测,轻量服务器CPU主频、处理器型号、公网带宽、月流量、Ping值测速、磁盘IO读写及使用限制,轻量应用服务器CPU内存性能和标准型云服务器CVM处于同一水准,所以大家不要担心轻量应用服务器的性能,腾讯云百…

JavaEE企业级应用开发教程——第十章 初识Spring MVC框架(黑马程序员第二版)(SSM)

第十章 初识Spring MVC框架 JSP Model2架构模型是一种将页面显示、流程控制和业务逻辑分离的Web应用程序架构模型,采用JSP、Servlet和JavaBean技术实现。但是,它将通用逻辑以硬编码的方式实现,每次开发新的Web应用程序时都需要重新编写Servl…

MyBatis注解开发---实现增删查改和动态SQL

目录 1. 环境搭建 (1)创建持久层接口,并在接口方法上定义Sql语句 (2)测试方法 (3)运行结果 2. 注解实现增删查改 (1)增加用户 (2)删除用…

【4.17】贪心算法入门

什么是贪心? 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 刷题或者面试的时候,手动模拟一下感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心。 贪心的解题步骤? 贪心算法一…

《人体地图》笔记

《人体地图》 坂井建雄 著 孙浩 译 腹部通向大腿的隧道 腹部与大腿的分界点是大腿根部,即是腹股沟。 腹壁肌肉连结在腹股沟韧带上,腹壁肌肉包括三层,分别为腹外斜肌、腹内斜肌和腹横肌,每块肌肉都有一个张开的小孔,…

【靶场设计和渗透】

目录 一、前言 二、靶场设计 1、局域网 2、说明 三、渗透测试 1、信息收集 2、漏洞利用 四、后渗透利用 1、提权 2、权限维持 一、前言 为了深入贯彻学习网络安全法律法规,深入学习渗透测试知识,强化实战技能............ 编不出来了&#xff…

The Sandbox 的 OliveX Fitness 之城来啦!

4 月 11 日至 17 日,亲自来体验一下吧! 这种独特的体验将有趣和故事驱动的游戏与健身以及奖励结合起来。玩家可以探索隐藏的角落,逃出迷宫,爬上梯子,清除障碍,完成相互关联的任务,所以战略规划是…