Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Google资源管理器简析

Google资源管理器简析

作者头像
大数据和云计算技术
发布于 2018-03-08 07:27:39
发布于 2018-03-08 07:27:39
1.1K0
举报

9.2.2 Borg[1]

Borg是一个集群管理器,负责对来自几千个应用程序所提交的Job进行接收、调试、启动、停止、重启和监控,这些Job将用于不同的服务,运行在不同数量的集群中,每个集群各自可包含最多几万台服务器。Borg的目的是让开发者能够不必操心资源管理的问题,让他们专注于自己的工作,并且做到跨多个数据中心的资源利用率最大化。图9.2描述了Borg的主要架构。

图9.2

该架构中包含了以下几个组件。

—单元(Cell):将多台机器的集合视为一个单元。单元通常包括1万台服务器,但如果有必要的话也可以增加这个数字,它们各自具有不同的CPU、内存、磁盘容量等。

—集群:一般来说包含了一个大型单元,有时也会包含一些用于特定目的的小单元,其中有些单元可以用作测试。一个集群通常来说限制在一个数据中心大楼里,集群中的所有机器都是通过高性能的网络进行连接的。一个网站可以包含多个大楼和集群。

—Job:一种在单元的边界之内执行的活动。这些Job可以附加一些需求信息,例如CPU、OS、公开的IP等。Job之间可以互相通信,用户或监控Job也可以通过RPC方式向某个Job发送命令。

—Task:一个Job可以一个或多个任务组成,这些任务在同一个可执行进程中运行。这些任务通常直接运行在硬件上,而不是在虚拟环境中运行,以避免虚拟化的成本。任务的程序是静态链接的,以避免在运行时进行动态链接。

—分配额(Alloc):专门为一个或多个任务所保留的机器资源集。分配额能够与运行于其上的任务一起被转移到一台不同的机器上。一个分配额集表示为某个Job保留的资源,并且分布在多台机器上。

—Borglet:一个运行在每台机器上的代理。

—BorgMaster:一个控制器进程,它在单元级别上运行,并保存着所有Borglet上的状态数据。BorgMaster将Job发送到某个队列中以执行。BorgMaster和它的数据将会进行5次复制,数据将被持久化在一个Paxos存储系统中。所有的BorgMaster中有一个领导者。

—调度器:对队列进行监控,并根据每台机器的可用资源情况对Job进行调度。

Borg系统的使用者将向系统提交包含了一个或多个任务的Job,这些任务将共享同样的二进制代码,并在一个单元中执行,每个Borg单元由多台机器组成。在这些单元中,Borg会组合两种类型的活动:一种是如Gmail、GDocs、BigTable之类的长期运行服务,这些服务的响应延迟很短,最多为几百毫秒;另一种是批量处理的Job,它们无须对请求进行即时响应,运行的时间也可能会很长,甚至是几天。第一种类型的Job被称为prodjob(生产Job),它们相对于批量Job来说优先级更高;第二种类型的Job被认为非生产环境中的Job。生产Job能够获得一个单元的CPU资源中的70%,并且占用所有CPU数量的大约60%,还能分配到55%的内存,并占用其中的大约85%。

某些单元的任务量是每分钟接受1万个新的任务,而一个BorgMaster能够使用10~14个CPU内核,以及50GB的内存。一个BorgMaster能够实现99.99%的可用性,但即使某个BorgMaster或Borglet出现停机状况,任务也能够继续运行。有50%的机器会运行9个或9个以上的任务,而某些机器能够在4500个线程中运行25个任务。任务的启动延迟平均时间是25秒,其中的20秒用于安装包。这些等待时间中的大部分与磁盘访问有关。

这套系统的主要安全机制是LinuxChroot Jail及SSH,通过Borglet进行任务调试的工作。对于运行在GAE或GCE中的外部软件,Google将使用托管的虚拟机作为一个Borg任务在某个KVM进程中运行。

Google在过去十年间在生产环境上所学到的某些经验与教训已经应用在Kubernetes的设计上:对属于同一服务的job的操控能力、一台机器多个IP地址、使用某种简化的Job配置机制、使用PODS(其作用与分配额相同)、负载均衡、深度反思为用户提供调试数据的方式。

9.2.3 Omega

1.背景

Google的论文Omega:flexible,scalable schedulersfor large compute clusters中把调度分为3代:第一代是独立的集群;第二代是两层调度(Mesos,YARN);第三代是共享状态调度,如图9.3所示。

图9.3

2.架构

为了克服双层调度器的局限性,Google开发了下一代资源管理系统Omega。Omega是一种基于共享状态的调度器,该调度器将双层调度器中的集中式资源调度模块简化成了一些持久化的共享数据(状态)和针对这些数据的验证代码,而这里的“共享数据”实际上就是整个集群的实时资源使用信息。一旦引入共享数据后,共享数据的并发访问方式就成为该系统设计的核心。而Omega则采用了传统数据库中基于多版本的并发访问控制方式(也称为“乐观锁”,Multi-VersionConcurrency Control,MVCC),大大提升了Omega的并发性。由于Omega不再有集中式的调度模块,因此,不能像Mesos或者YARN那样,在一个统一模块中完成以下功能:对整个集群中的所有资源分组;限制每类应用程序的资源使用量;限制每个用户的资源使用量等。这些功能全部由各个应用程序调度器自我管理和控制。根据论文所述,Omega只是将优先级这一限制放到了共享数据的验证代码中,即当多个应用程序同时申请同一份资源时,优先级最高的那个应用程序将获得该资源,其他资源限制全部下放到各个子调度器。引入多版本并发控制后,限制该机制性能的一个因素是资源访问冲突的次数,冲突次数越多,系统性能下降得越快。而Google通过实际负载测试证明,这种方式的冲突次数是完全可以接受的。该论文中还谈到,Omega是从Google现有系统中演化而来的。既然这篇论文只介绍了Omega的调度器架构,我们可推测它的整体架构类似于Mesos。这样,如果你了解Mesos,那么就可知道,我们可以通过仅修改Mesos的Master将之改造成一个Omega。

3.优缺点

(1)优点:共享资源状态,支持更大的集群和更高的并发。

(2)缺点:只有论文,无具体实现,在小集群下没有优势。


本文选自本人新作《大数据架构详解:从数据获取到深度学习》9.2节。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据和云计算技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Google披露:大规模集群管理工具Borg的细节
摘自:InforQ 微信号:inforqchina Google最近发布了一篇名为“Google使用Borg进行大规模集群的管理”的论文,披露了这个在过去极少提及的技术的细节。 Borg是一个集群管理器,它负责对来自于几千个应用程序所提交的job进行接收、调试、启动、停止、重启和监控,这些job将用于不同的服务,运行在不同数量的集群中,每个集群各自都可包含最多几万台服务器。Borg的目的是让开发者能够不必操心资源管理的问题,让他们专注于自己的工作,并且做到跨多个数据中心的资源利用率最大化。下面这张图表描述
大数据文摘
2018/05/23
9230
面向容器技术资源调度关键技术对比
摘要:本文以资源分配理念:拍卖、预算、抢占出发,引出Borg、Omega、Mesos、Kubernetes架构、数据、API的特点比较。然后梳理资源共享各种不同共享形式的内容,接着对比任务类型,最后回到资源利用率和基于数据预测角度,看相关系统是如何运用的和实现各自场景目标的。最后给出阿里巴巴电商在线服务资源调度器Zeus关键技术内容。具体单个调度器技术和文章,可以在网络获取。进入这个领域的门槛不在具体某个技术,而业务场景和技术选型的映射匹配,特别是周边系统的完善程度,决定了如何选择方案、如何制定落地计划。整
小小科
2018/05/03
1.9K0
面向容器技术资源调度关键技术对比
Google的大规模集群管理系统Borg(上篇)
摘要:Google的Borg系统是一个运行着成千上万项作业的集群管理器,它同时管理着很多个应用集群,每个集群都有成千上万台机器,这些集群之上运行着Google的很多不同的应用。Borg通过准入控制,高效的任务打包,超额的资源分配和进程级隔离的机器共享,来实现超高的资源利用率。它通过最小化故障恢复时间的运行时特性和减少相关运行时故障的调度策略来支持高可用的应用程序Borg通过提供一个作业声明的标准语言,命名服务的集成机制,实时的作业监控,以及一套分析和模拟系统行为的工具来简化用户的使用。 我们将通过此论文对B
CSDN技术头条
2018/02/12
2.3K0
Google的大规模集群管理系统Borg(上篇)
Borg:Google集群管理大杀器
Google的Borg集群系统需要管理数十万个jobs,要能够提高资源使用率、隔离性,通过调度策略降低关联故障发生率,通过声明式job描述语言简化复杂性。
陆道峰
2020/08/31
1.1K0
谷歌Borg论文阅读笔记(一)—— 集群操作系统
Borg的作用是:提供一个标准任务规格语言,集成名字服务,实时任务监控,以及工具来分析和模拟系统行为。 Google内部的集群管理系统调用都是用Borg来admits(准入),schedules(调度),starts,restarts,Borg监 控了所有Google所有范围运行的应用。
sean.liu
2022/09/07
7040
谷歌Borg论文阅读笔记(一)—— 集群操作系统
资源管理框架(mesos/YARN/coraca/Torca/Omega)分析
1 资源调度的目标和价值 1.1 子系统高效调度 任务之间资源隔离,减少争抢。 任务分配调度时结合资源分配,各个任务分配合理的资源,充分利用系统资源,减少资源利用不充分的问题。 资源调度结合优先级,优先级高的分配更多的资源。 1.2 提高全系统的资源利用率 各个子系统,存在不同时期,对资源需求不一样的情况,平滑系统资源的利用。 1.3 支持动态调整切分资源,增强系统扩展性。 系统对资源的规划很难一次性准确,通过mesos支持虚拟主机的方式,动态扩展。 2 资源调度使用限制以及难点 2.1 资源调度使用限制
大数据和云计算技术
2018/03/07
2.5K0
资源管理框架(mesos/YARN/coraca/Torca/Omega)分析
scheduler-设计与实现
调度器的核心目标是: 将 workload bind 到 resource【workload --bind--> resource】,结合各类信息,将这一目标做到最优。
王磊-字节跳动
2020/10/18
2.1K0
【云原生下离在线混部实践系列】深入浅出 Google Borg
作者徐蓓,腾讯云专家工程师,长期从事云计算 IaaS、PaaS 架构和研发工作,现负责腾讯云 TKE 资源调度、离在线混部、大数据云原生化等领域。
腾讯云原生
2020/05/26
1.9K0
【云原生下离在线混部实践系列】深入浅出 Google Borg
谷歌Borg论文阅读笔记(二)—— 任务混部和资源隔离
Google几乎所有的机器都是混部的,在一台机器上,可能运行着不同jobs的tasks。根据论文中所说,Google的50%的机器运行了9个甚至更多的tasks。90%的机器运行着25个tasks,达到4500个线程。
sean.liu
2022/09/07
8750
Kubernetes的技术历史
从 Borg 和 Omega 中汲取的经验教训,并将其应用于 Kubernetes。
云云众生s
2024/11/14
1430
Kubernetes的技术历史
Omega系统简介
1.背景 Google的论文Omega:flexible,scalable schedulers for large compute clusters中把调度分为3代:第一代是独立的集群;第二代是两层
大数据和云计算技术
2018/03/08
2.5K0
Omega系统简介
Docker容器实战(八) - 漫谈 Kubernetes 的本质
在前面以Docker项目为例,一步步剖析了Linux容器的具体实现方式。 通过这些应该明白:一个“容器”,实际上是一个由Linux Namespace、Linux Cgroups和rootfs三种技术构建出来的进程的隔离环境。
JavaEdge
2019/10/18
8120
Docker容器实战(八) - 漫谈 Kubernetes 的本质
1. 开始Kubernetes: k8s
  本节目标: 要求会画bolg系统和kubernetes系统的架构图, 并且知道架构每一部分的作用.
用户7798898
2020/09/27
5040
1. 开始Kubernetes: k8s
应用部署与管理 —— Kubernetes 架构
随着虚拟化技术和云计算的发展,为容器技术的发展创造了条件,2013 年,dotcloud 公司开源容器技术 Docker,受到了业界的极大关注和欢迎,一种新的构建和交付方式迅速风靡全球。Docker 解决了应用打包和分发问题,随着 Docker 与微服务等技术的深入融合,应用编排和管理受到越来越多的关注,也成为大规模容器化的一个重要挑战。以解决容器编排和管理的平台 Kubernetes 在 2013 年横空出世,并与 Docker Swarm、Mesos 展开激烈的竞争,最后 Kubernetes 在 2017 年大获全胜,成为容器编排的实施标准。Kubernetes 作为 CNCF 的第一个毕业项目,凭借自身技术优势以及强大的社区和生态建设,已成为云时代的操作系统,云原生技术的基石。
腾讯云 CODING
2022/03/16
1.1K0
应用部署与管理 —— Kubernetes 架构
kubernetes脑图下载与学习笔记总结
[TOC] Kubernetes 学习路径 0x00 简要介绍 简要介绍 发展历史 公有云类型说明 基础设施及服务 (IaaS) 平台及服务(PaaS) 软件即服务(SaaS) 部署时代变迁 传统部署时代 (早期传统IT企业、单机部署、资源利用率较低) 虚拟化部署时代 (近现代IT企业使用较多) 容器化部署时代 (现代企业从传统企业向数据信息化建设转型) 资源管理器对比 Apache MESO
全栈工程师修炼指南
2020/12/17
8800
人生苦短,我用k8s--------------k8s的前世今生
Kubernetes的名字来自希腊语,意思是“舵手” 或 “领航员”。K8s是将8个字母“ubernete”替换为“8”的缩写。
不吃小白菜
2020/10/09
1.4K0
操作系统的演变及在云计算的应用
随着现代信息越来越丰富,更多的信息需要被处理及计算,仅仅的单台计算机已经满足不了计算,需要将更多的计算机进行同时计算,对操作系统的要求则越来越高,各种各样云计算的的操作系统也应运而生。
jackwlchen
2020/08/10
1.4K0
操作系统的演变及在云计算的应用
美团点评容器平台HULK的调度系统
背景 美团点评作为国内最大的O2O平台,业务热度的高峰低谷非常显著且规律,如果遇到节假日或促销活动,流量还会在短时间内出现成倍的增长。过去传统虚拟机的服务运行及部署机制在应对服务快速扩容、缩容需求中存在诸多不足: 资源实例创建慢,需要预先安装好运行所需的环境,比如JDK等。 扩容后的实例,需要经过代码部署流程,一些情况下还需要修改配置后才能承接流量。 资源申请容易回收困难,促销活动后做相关资源的回收下线会比较漫长。 由于业务存在典型的高峰低谷,为保障业务稳定,资源实例数要保障能抗高峰期容量峰值的1-2倍,从
美团技术团队
2018/03/13
1.8K0
美团点评容器平台HULK的调度系统
hadoop集群老的资源管理Mrv1与Yarn资源管理器的工作流程和对比
2、JobTracker负担重,既要负责资源管理,又要进行作业调度;当需处理太多任务时,会造成过多的资源消耗。
全栈程序员站长
2022/08/09
1K0
hadoop集群老的资源管理Mrv1与Yarn资源管理器的工作流程和对比
Borg、Omega 和 Kubernetes 十多年来从三个容器管理系统中汲取的经验教训
https://queue.acm.org/detail.cfm?id=2898444
五分钟学SRE
2024/05/10
3150
推荐阅读
相关推荐
Google披露:大规模集群管理工具Borg的细节
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档