前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Borg:Google集群管理大杀器

Borg:Google集群管理大杀器

作者头像
陆道峰
发布2020-08-31 13:02:06
9690
发布2020-08-31 13:02:06
举报

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

简介

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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 相关术语
  • 整体架构
    • Borgmaster
      • scheduling
        • Borglet
        • 隔离
        • 总结
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档