首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Borg:Google集群管理大杀器

Borg:Google集群管理大杀器

作者头像
陆道峰
发布于 2020-08-31 05:02:06
发布于 2020-08-31 05:02:06
1.1K0
举报

论文研读系列是阅读、总结计算机领域优秀论文的系列文章。由于论文的学术性较高,无法面面俱到,只会就关键思想进行概括介绍。

简介

Google的Borg集群系统需要管理数十万个jobs,要能够提高资源使用率、隔离性,通过调度策略降低关联故障发生率,通过声明式job描述语言简化复杂性。

Borg提供三个主要优势:

1.隐藏资源管理与故障处理的细节,用户可以集中在应用开发上2.高可用、高稳定3.O(10000)机器规模内高效任务调度

相关术语

1.job and task,一个job包含多个task,每个task包含多个进程

2.nameing and monitoring,通过borg name service提供服务发现。每个task都要提供健康检查HTTP接口,用于查询task的健康信息和各种指标数据3.cluster and cells,cell表示一组机器,cell中的机器构成一个集群,cell是一个逻辑区分概念

整体架构

Borg系统主要由以下构成:

1.一系列机器2.本地中心化控制器Borgmaster3.每台机器上运行的客户端Borglet

Borgmaster

Borgmaster包含两个组件:master进程和scheduler。master用于处理客户端的RPC请求,改变集群中的资源状态或者响应数据只读访问请求。master还负责管理系统中的状态(machines,task,allocs...),和Borglet通信,提供web UI

在容错上,Borgmaster实际上有5个副本,逻辑上只有一个,通过Paxos协议选举逻辑上的leader。从选举leader到恢复数据大约要10s。master还会把自身某时刻的状态作为checkpoint存储到paxos store中。

scheduling

当提交job时,borgmaster将它记录到paxos store中,并加入到task的pending queue。scheduler会扫描获取任务,然后调度到满足其需求的机器上。扫描过程是相对复杂的,论文中是这样说的:

the scan proceeds from high to low priority, modulated by a round-robin scheme within a priority to ensure fairness across users and avoid head-of-line blocking behind a large job.

自己目前还不是太理解。

调度算法分为两部分:

1.feasibility checking,可行性检查,判断机器是否满足task的要求2.scoring,通过对满足条件1中的机器打分,选择最合适的那个

这样一来,调度器的任务就是一个不断重复下面的流程:

1.从master抓取状态变更2.更新本地状态拷贝3.执行任务调度4.通知master自己的调度情况

整个过程就像有钱人的生活,枯燥又无味...

Borglet

Borgleft是每个机器(master除外)上都要运行的客户端,它负责任务的启动、停止、重启等,还负责管理机器资源、滚动debug日志、上报机器状态到master和监控系统。

Borgmaster会主动从Borglet上polls信息,poll的频率可控制,这样Borgmaster可以控制系统中的通信频率,避免不必要的流程控制机制。

为了性能和扩展性,每个Borgmaster会运行无状态的副本,论文中称为link shard,来处理一些与Borglet的通信。在弹性方面,Borglet总是上报本节点的完整信息,link shard会对上报信息进行对比,只把不同的部分发送给状态机,降低master的更新负载。

当集群中的机器非常多时,Borg会把borglet分割为多个进行,提高吞吐量。

隔离

隔离可以保证安全性,在同一个机器上,通过chroot机制隔离不同的task,提供ssh链接机制用于debug。

现在,Borg的task运行在基于Linux CGroup的资源容器中。

总结

Borg论文出自Google工程师,内容上还是更偏工程化,和伯克利的ray、mesos论文相比,缺少学术性条理性,阅读起来也不是那么顺畅。因此阅读两边后决定只记录部分重要的内容,一些细节没有罗列。

阅读完Borg的论文,再回头看Kubernetes的架构和相关概念,和Borg论文中的思想基本上是一致的。所以对于Kubernetes从业人员来说,这篇论文还是值得阅读的。


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

本文分享自 机器学习与系统 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
谷歌Borg论文阅读笔记(一)—— 集群操作系统
Borg的作用是:提供一个标准任务规格语言,集成名字服务,实时任务监控,以及工具来分析和模拟系统行为。 Google内部的集群管理系统调用都是用Borg来admits(准入),schedules(调度),starts,restarts,Borg监 控了所有Google所有范围运行的应用。
sean.liu
2022/09/07
7310
谷歌Borg论文阅读笔记(一)—— 集群操作系统
Google的大规模集群管理系统Borg(上篇)
摘要:Google的Borg系统是一个运行着成千上万项作业的集群管理器,它同时管理着很多个应用集群,每个集群都有成千上万台机器,这些集群之上运行着Google的很多不同的应用。Borg通过准入控制,高效的任务打包,超额的资源分配和进程级隔离的机器共享,来实现超高的资源利用率。它通过最小化故障恢复时间的运行时特性和减少相关运行时故障的调度策略来支持高可用的应用程序Borg通过提供一个作业声明的标准语言,命名服务的集成机制,实时的作业监控,以及一套分析和模拟系统行为的工具来简化用户的使用。 我们将通过此论文对B
CSDN技术头条
2018/02/12
2.4K0
Google的大规模集群管理系统Borg(上篇)
Google披露:大规模集群管理工具Borg的细节
摘自:InforQ 微信号:inforqchina Google最近发布了一篇名为“Google使用Borg进行大规模集群的管理”的论文,披露了这个在过去极少提及的技术的细节。 Borg是一个集群管理器,它负责对来自于几千个应用程序所提交的job进行接收、调试、启动、停止、重启和监控,这些job将用于不同的服务,运行在不同数量的集群中,每个集群各自都可包含最多几万台服务器。Borg的目的是让开发者能够不必操心资源管理的问题,让他们专注于自己的工作,并且做到跨多个数据中心的资源利用率最大化。下面这张图表描述
大数据文摘
2018/05/23
9460
Google资源管理器简析
9.2.2 Borg[1] Borg是一个集群管理器,负责对来自几千个应用程序所提交的Job进行接收、调试、启动、停止、重启和监控,这些Job将用于不同的服务,运行在不同数量的集群中,每个集群各自可
大数据和云计算技术
2018/03/08
1.1K0
Google资源管理器简析
【云原生下离在线混部实践系列】深入浅出 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
9130
1. 开始Kubernetes: k8s
  本节目标: 要求会画bolg系统和kubernetes系统的架构图, 并且知道架构每一部分的作用.
用户7798898
2020/09/27
5170
1. 开始Kubernetes: k8s
面向容器技术资源调度关键技术对比
摘要:本文以资源分配理念:拍卖、预算、抢占出发,引出Borg、Omega、Mesos、Kubernetes架构、数据、API的特点比较。然后梳理资源共享各种不同共享形式的内容,接着对比任务类型,最后回到资源利用率和基于数据预测角度,看相关系统是如何运用的和实现各自场景目标的。最后给出阿里巴巴电商在线服务资源调度器Zeus关键技术内容。具体单个调度器技术和文章,可以在网络获取。进入这个领域的门槛不在具体某个技术,而业务场景和技术选型的映射匹配,特别是周边系统的完善程度,决定了如何选择方案、如何制定落地计划。整
小小科
2018/05/03
2K0
面向容器技术资源调度关键技术对比
scheduler-设计与实现
调度器的核心目标是: 将 workload bind 到 resource【workload --bind--> resource】,结合各类信息,将这一目标做到最优。
王磊-字节跳动
2020/10/18
2.1K0
人生苦短,我用k8s--------------k8s的前世今生
Kubernetes的名字来自希腊语,意思是“舵手” 或 “领航员”。K8s是将8个字母“ubernete”替换为“8”的缩写。
不吃小白菜
2020/10/09
1.4K0
kubernetes脑图下载与学习笔记总结
[TOC] Kubernetes 学习路径 0x00 简要介绍 简要介绍 发展历史 公有云类型说明 基础设施及服务 (IaaS) 平台及服务(PaaS) 软件即服务(SaaS) 部署时代变迁 传统部署时代 (早期传统IT企业、单机部署、资源利用率较低) 虚拟化部署时代 (近现代IT企业使用较多) 容器化部署时代 (现代企业从传统企业向数据信息化建设转型) 资源管理器对比 Apache MESO
全栈工程师修炼指南
2020/12/17
9050
k8s(一)入门
BorgMaster:负责请求分发,整个集群的大脑 BorgLet:真正运行的节点,提供计算 sheduler:调度器,将数据写入到Paxos(键值对数据库)BorgLet监听Paxos数据库,如果发现有自己的请求则处理相应的任务
全栈程序员站长
2022/09/22
4860
k8s(一)入门
Kubeadm 1.9 HA 高可用集群本地离线镜像部署【已验证】
Kubernetes 最初源于谷歌内部的 Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes 的目标旨在消除编排物理 / 虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的 workflows 和更高级的自动化任务。 Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。 Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。
sunsky
2020/08/20
1.2K0
Kubeadm 1.9 HA 高可用集群本地离线镜像部署【已验证】
资源管理框架(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)分析
Kubernetes的技术历史
从 Borg 和 Omega 中汲取的经验教训,并将其应用于 Kubernetes。
云云众生s
2024/11/14
2250
Kubernetes的技术历史
【重识云原生】第六章容器6.2.2节——K8S架构剖析
        Kubernetes 最初源于谷歌内部的 Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes 的目标旨在消除编排物理/虚拟计算、网络和存储等基础设施资源的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。Kubernetes 也提供稳定、兼容的基础(平台),用于构建定制化的 workflows 和更高级的自动化任务。 Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。 Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。
江中散人_Jun
2022/09/28
5810
【重识云原生】第六章容器6.2.2节——K8S架构剖析
Kubernetes架构为什么是这样的?
这个架构图看起来会比较复杂,很难看懂,我把这个官方的架构图重新简化了一下,就会非常容易理解了:
kubernetes中文社区
2019/06/24
9550
Kubernetes架构为什么是这样的?
Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)
随着"互联网+"时代的业务增长、变化速度及大规模计算的需求,廉价的、高可扩展的分布式x86集群已成为标准解决方案,如Google已经在几千万台服务器上部署分布式系统。Docker及其相关技术的出现和发展,又给大规模集群管理带来了新的想象空间。如何将二者进行有效地结合?下面将记录使用Mesos+Zookeeper+Marathon+Docker分布式部署Paas云平台环境,其中: 1)Mesos:Mesos采用与Linux kernerl相同的机制,只是运行在不同的抽象层次上。Mesos kernel利用资源
洗尽了浮华
2018/01/22
2.7K0
Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)
【分布式技术】分布式系统调度架构之单体调度,非掌握不可
我们每天都在谈论分布式架构,也有朋友经常问我分布式架构到底是个什么的架构。其实简单来说就是,分布式系统架构就是将多个服务器资源统一管理起来,然后挑选合适的服务器去处理用户的请求或者指定的任务。当然分布式系统技术肯定不是这一篇能讲清楚的,前面也讲了两篇了,忘记了的可以回顾下(不好意思,懂分布式事务的你真的很了不起,下篇,面试是不是经常被问到分布式系统核心问题,这一次没人难倒你)我也会一直讲这方面技术的。
架构师修炼
2020/07/20
1.1K0
【分布式技术】分布式系统调度架构之单体调度,非掌握不可
Docker容器实战(八) - 漫谈 Kubernetes 的本质
在前面以Docker项目为例,一步步剖析了Linux容器的具体实现方式。 通过这些应该明白:一个“容器”,实际上是一个由Linux Namespace、Linux Cgroups和rootfs三种技术构建出来的进程的隔离环境。
JavaEdge
2019/10/18
8390
Docker容器实战(八) - 漫谈 Kubernetes 的本质
推荐阅读
相关推荐
谷歌Borg论文阅读笔记(一)—— 集群操作系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档