欢迎光临 x-algo
关注算法在工业界应用
Hi, 这是一个关注大数据算法在工业界应用的网站

Borg介绍

功能

Google的Borg系统是一个集群管理软件,实现下面三个功能

  1. 隐藏对集群资源管理、失败处理的细节,让开发者更加关注自己的程序本身
  2. 高可靠和可用
  3. 更方便的在多机器上面运行job(程序/服务)

 

两类作业

我们在集群上面运行的程序可以分为两类,服务类和批处理类。「 服务类」可以是一个web服务,需要持续提供高性能的服务(例如qps等),不同的时间可能压力有很大差异;「批处理」就是像MapReduce这类作业。Borg可以同时支持这两类作业的调度,并且可以指定优先级。

看到这里,大家应该发现Borg和Hadoop生态中YARN扮演的角色类似,但是Borg提供了很多YARN没有提供的功能。典型的就是程序的「运维」功能

运维三宝

在工业界,运维工程师做的角色为业务稳定、服务安全起到很重要的作用。站在开发的角度,运维其中非常重要的三个宝为:回滚、重启、灰度。这三宝,Borg提供了非常简单、透明的方式实现。

整体结构

QQ20161213-0

 

作业生存周期

类似Hadoop上面的job

QQ20161213-1

 

优先级和配额

job之间出现资源竞争的时候通过优先级和配额解决,所以低优先级的作业可能直接被kill掉。kill掉的时候,在发送SIGKILL之前会发送别的信号量,保证程序可以做一些类似「清理」的工作,这个原理类似于shell中的trap。

当提交的新作业发现配额不能满足,这个作业会直接被拒绝。

内置的DNS

为了方便进行服务实例增减,访问的时候通过域名访问是一种不错的方式,实际中只需要动态修改DNS的信息就可以实现动态增减服务了,这个DNS域名,就是Borg中job的名字。

 

BorgMaster

如上面结构图,master逻辑上是有一个节点,实际上是有5分拷贝,每一个拷贝都会记录cell的信息,Paxos算法保证其分布式高可用。BorgMaster接受客户端的RPC请求,并管理集群中的组件。当一个master挂掉之后,就会触发选举算法,这个和zk原理一样。

BorgMaster提供了checkpoint功能,其实类似数据库的快照,方便异常恢复和debug等。

Scheduling

先来聊聊资源分配的本质,一个多处理节点集群系统中,有独立请求任务共n个,要从y个处理节点中选择c个能够满足基本要求的处理节点出来,就形成这样一个问题:怎样将n个外界请求较为合理地分配到c个处理节点执行,使得每一个处理节点剩余资源最少的同时满足每个请求任务需要的资源量?这是一个NP难题,不可能找到一个多项式时间最优算法,所以最优解的时间复杂度为 \(O(c^n)\) .

可见,实现最优的调度成本是别较高的。这也就产生了很多接近最优解的A*算法。

我们说回Borg,当一个job被提交的时候回被存储到Paxos上,对应的task会被放到等待队列中。schedule定期检车这个等待队列,从中按照调度算法将task分配给具体的机器。 schedule的调度算法分为两部分:可行性检查和打分。可行性检查中,schedule根据task的约束查找候选机器,同时考虑部署成本、未来剔除成本、新的任务分配成功概率等因素。

大概流程如下图:

FB56BE69-8B27-4B15-BAE8-214DAF2FA90D

Borglet

负责当前机器的任务启动和停止、资源的管理,是BorgMaster放到各个机器的「爪牙」。Borglet会将机器的情况报告给BorgMaster。

BorgMaster的副本会和Borglet建立通信,并且汇聚信息,只将有差异的信息进行汇报。如果一个Borglet和master失联了,Borglet还是照常服务,不会杀掉当前机器的task。恢复之后可能会收到master的kill指令,因为失联期间master可能认为当前Borglet已经挂掉,并已经在别的Borglet上启动了task。

一些效率考虑

打分是一种非常耗性能的操作,所以又几种优化打分的操作:

  1. 所以如果一个机器的task没有增减,这个机器的打分就不会重新计算;
  2. 同一个job中的多个task的也打一次分即可,他们的约束往往是一样的;
  3. 集群中机器太多,可以通过抽样机器进行打分,不用都计算一遍;

共享集群

bash的作业和线上的服务同时使用一个集群,可以节省20%-30%的机器成本。

隔离

通过linux chroot机制实现task安全隔离。

教训

job是唯一的task分组机制导致无法天然的管理多个job组成的单个实体,k8s通过Label实现。

一个机器只有一个IP将问题复杂化,ip和端口变成了一种需要调度的资源(没懂,是因为冲突?)

参考

原始论文下载:Large-scale cluster management at Google with Borg

中文资料:http://dockone.io/article/763

未经允许不得转载:大数据算法 » Borg介绍

相关推荐

  • 暂无文章

评论 抢沙发

*

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

关注大数据算法在工业界应用

本站的GitHub关于本站