Borg论文翻译及理解
1. Abstract
Google的borg使用大量机器支持着数千个应用的10W个作业,其中部分单个集群规模超过万台机器。
其通过
- Adminition control
- Task-packing
- Over-commitment
- Machine sharing with process level isolation
提供
- Declarative job specification lauguage
- Naming service integration
- Real time job monitoring
- Tools to analyze and simulate system behavior
2. Introduction
Borg 主要得益于三点:
- 他隐藏了Resource Management以及Failure Handling的细节,所以保证他的用户可以focus在应用开发本身。
- 其本身就具有高可用性以及高可靠性,与此同时,也保证运行其上的应用具有同样的特性。
- 很好的保证我们可以在数万台机器上运行应用。
Borg当然不是第一个提出这些问题的软件,但是的确是第一个在如此规模运行的软件。
3. 用户眼中的Borg
在Google开发工程师眼中,他们将作业提交到Borg,Borg将他们的作业运行在Borg Cell中。每个Borg Cell可能有多达上万台机器构成。本节主要介绍在开发者眼中的borg。
3.1 Work Load
Borg支持异质的workload,其主要包括两种:
- 一种是never goes down Service 如 Gmail Google Doc,这些服务是latency-sensitive的(ms level)
- 另外一种是Batch Job 如Mapreduce作业。这些任务可能运行几天后完成,这些相比之前的服务对延时并没有那么敏感。
在此文当中,我们将高priority任务称之为Prod(production),其他的则称为non-prod。大部分第一种任务是prod任务,而batch任务大部分则为none-prod任务。
在一个典型的Cell中,prod类型任务占有70%的CPU资源,并利用了其中的60%,同时占用了55%的内存,并使用了其中的85%。
3.2 Clusters and Cells
一个Cluster往往用于描述处在同一个机房中的一部分机器,一个Cluster往往具有个Cell,部分Cluster还具有Test Cell以及其他具有其他功能的Cell。
一般一个中等规模的Cell具有1w个左右的机器,而且其中的机器并非同构架机器,可能different in cpu mem dist network。但Borg屏蔽了这些特异性,对于developer而言,一切都是一样的,包括故障处理,监控以及依赖等等。