文档章节

大规模集群管理系统Borg

synote
 synote
发布于 2016/03/19 22:21
字数 1590
阅读 41
收藏 0

1 简介

在谷歌内部,集群管理平台Borg系统负责创建、调度、运行、监控各种类型的应用。

Borg主要用来解决三大问题:(1)屏蔽资源管理和异常处理,使用户专注于应用的设计开发;(2)支持应用高可用性;(3)通过服务器集群处理大规模任务。虽然Borg并不是首个关注上述问题的系统,但为这些问题提供了完善的解决方案

论文地址:http://research.google.com/pubs/pub43438.html

2 用户的需求

Borg的使用者是谷歌的开发者和系统管理员,负责运行谷歌的各种应用和服务。使用者已被称做jobs的方式向Borg提交应用,每个job可以包含一个或多个运行相同二进制程序的tasks。每个job运行在一组服务器中,该运行环境被称作unit,下面将以用户的视角来介绍Borg

2.1 负载

Borg中运行的应用分为两个部分。第一种是长期运行的服务,负责处理即时响应的请求(处理时长只有微秒到几百毫秒)。这些服务被用于面向最终用户的产品,比如Gmail、Google Docs、搜索或者内部基础服务。另一种是批处理任务,运行时长从几秒钟到几天的时间,它们对即时的处理性能并不敏感。应用通过多个cell并行运行,批处理任务不断被提交和完成的同时,后台服务不间断的处理来自终端用户的请求。

在过去的几年中,各种应用在Borg上搭建起来,其中包括MapReduce系统、FlumeJava、Millwheel、Pregel。其中大部分应用会通过客户端创建一个主进程和多个工作任务。

在本文章中,我们把高优先级的Borg任务称作production任务,其他成为非production任务。大部分长期运行的服务都属于prod任务,批处理任务大多属于non-prod类型。prod型任务被分配70%的cpu资源,实际中约有60%的使用率,任务分配55%的内存资源,实际中使用配额的85%。

2.2 Cluster和cells

在一个cell中的服务器从属于某一个cluster,它们通过数据中心特制的光纤连接。一个Cluster处于一个单一的数据中心中,一个cluster通常包括大量的cell单元,其中某些被用于测试或其他特殊用途。

一个中等的cell单元大约包含上万台服务器。一个cell单元中的服务器有多重规格。Borg系统自身负责哪一个服务器处理任务、分配资源,对用户屏蔽这些细节,同时监控服务器的健康运行。

2.3 Jobs和tasks

一个Borg job工作流包括名称、归属人和需要的tasks任务。Jobs工作流可以限制它的task任务运行在某种处理器、操作系统版本或者IP地址上。限制可以是固定的或可变的,后者各项是一种偏好设置而非规格。Job中的运行可以有依赖关系,一种job的启动依赖于另一个任务的结束。

每个task任务映射到一组在linux容器中运行的进程。大部分Borg的工作流并非运行在虚拟物理机中,那样的话会浪费更多的计算资源。相反,Borg系统设计为在没有虚拟化得处理器中运行。

一个Task任务包括依赖列表和在其Job中的标识。大多数task的属性都是相同的,但可以通过命令参数定制。每个计算资源的配额都通过友好的规则分配,我们不会固定资源的大小。Borg中的应用程序会尽量减少运行时的依赖关系,每个程序打包为独立的二进制代码和配置文件,并由Borg系统自动部署。

用户通过远程调用RPC、命令工具来管理Borg中的应用。每个job工作流定义在一个生命文件中。

图2:task和job的状态转移图

用户通过向Borg推送新的工作流配置信息来更新任务的属性, 这些操作是轻量的非原子的事务,可以被轻松的撤销直到任务完成。

有些task任务的更新需要服务重启,可能不在适合当前的机器,需要停止并被调度到新的服务器,其他一些则可以直接运行。

当Task任务被SIGKILL信号关闭时,可以通过unix的SIGTERM信号侦测到,这样服务有充分的条件完成当前的请求,拒绝新的请求,释放当前资源、保存状态。

2.4 allocs分配器

任务请求分配的资源会事先预留在Borg系统中,无论当前是否有任务申请。分配系统可以为将来的任务预先分配资源,回收任务结束释放的资源,调度来自不同Job的任务Task运行在一台物理机上。

 一个alloc set类似于一个Job任务,alloc set是在多个物理机上分配的alloc分组。一旦alloc set被创建后,一个或多个Job可以在其上运行。为描述简洁,通常使用task代指一个alloc,使用job代指一个alloc set

2.5 优先级、配额和管理

当任务的需求超过现有的资源时如何处理?解决方案是设置优先级和配额

每个任务都有一个用无符号整数表示的优先级。一个高优先级的Job可以抢占低优先级job的资源,即时可能会使后者终止。Borg为不同的应用场景设置了非重叠的优先级区段,包括各种监控、发布、批处理、测试环境。本文中prod jobs的优先级属于监控和发布区段


© 著作权归作者所有

上一篇: 关于梦
下一篇: 关于梦
synote
粉丝 0
博文 2
码字总数 1615
作品 0
海淀
私信 提问
在Google使用Borg进行大规模集群的管理 1-2

原作:Abhishek Vermay, Luis Pedrosaz, Madhukar Korupolu,David Oppenheimer, Eric Tune, John Wilkes http://research.google.com/pubs/pub43438.html 译者:难易 http://my.oschina.net/Ha......

难易
2015/10/10
3.6K
5
关于Kubernetes的介绍

Kubernetes介绍 Kubernetes是Google在2014年开源的一个容器集群管理系统,使用Go语言开发,Kuberneter也叫K8S K8S是Google内部一个叫Borg的容器集群管理系统衍生出来的,Borg已经在Google大规...

xiaoshuaiv5
03/12
0
0
Borg和Kubernetes有什么不同?未来的云需要什么?

大家好,我是来自于华为PaaS部门的钟成,目前正在做相关的一些产品研发。我想分享的主题是从Borg到Kubernetes,其实Borg就是Kubernetes的前身。我今天主要会谈三个方面,第一个是Borg的介绍,...

难易
2016/01/07
2.3K
7
快速安装与配置kubernetes集群搭

Kubernetes是什么? 首先,它是一个全新的基于容器技术的分布式架构领先方案。这个方案尽然很新,但它是谷歌十几年以来大规模应用容器技术的经验积累和升华的一个重要成果。确切地说,kuber...

xiangyunyan
06/25
69
0
在Google使用Borg进行大规模集群的管理

pdf: http://vdisk.weibo.com/s/z2pdgMOY-UA4C/1445988517 ----- 在Google使用Borg进行大规模集群的管理<Large-scale cluster management at Google with Borg> 原作: Abhishek Vermay, Luis......

Ryan-瑞恩
2016/01/08
394
0

没有更多内容

加载失败,请刷新页面

加载更多

无回路有向图的拓扑排序

因公司业务需要,在表单中每个字段都会配置自动计算,但自动计算公式中会引用到其他字段中的值。所以希望可以根据计算公式,优先计算引用的公式。所以最终使用了无回路有向图的扩扑排序来实现...

兜兜毛毛
42分钟前
4
0
如何抢占云栖大会C位?史上最强强强攻略来了

点击观看视频: APSARA云栖大会开发者情怀 原文链接 本文为云栖社区原创内容,未经允许不得转载。

阿里云官方博客
56分钟前
5
0
Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现

作者 | 声东 阿里云售后技术专家<br /> 文章来源:Docker,点击查看原文。 <br />以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情。尤其是当我们基于似是而非的理解...

阿里巴巴云原生
59分钟前
7
0
PHP7.3的新特性

2018年12月6日,PHP7.3正式版发布,在PHP7.2基础上进行了大量错误修复和安全优化,性能提升10%! 从目前的更新说明来看,PHP 7.3 并不是一个主打新特性的版本,包含更多的是 bug 修复。PHP 7...

迅睿CMS-PHP开源CMS程序
今天
7
0
Tomcat 应用中并行流带来的类加载问题

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/f-X3n9cvDyU5f5NYH6mhxQ 作者:肖铭轩、王道环 随着 Java8 的不断流行,越来越多的开发人员使用并行流(parallel)...

vivo互联网技术
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部