IT资讯 助力成本优化,腾讯全场景在离线混部系统 Caelus 正式开源

rogelio · 2021-11-09 19:30:05 · 热度: 34

助力成本优化,腾讯全场景在离线混部系统 Caelus 正式开源

导读 / Introduction

11月4日,在2021腾讯数字生态大会上,腾讯正式宣布开源全场景在离线混部系统Caelus

Caelus由腾讯大数据团队联合腾讯多个业务部门共同研发,旨在解决大数据资源缺口问题,通过Caelus在离线混部,扩充大数据任务可用资源,发挥空闲资源更大价值。在腾讯内部,Caelus混部方案已经被大规模应用到广告、存储、大数据、机器学习等多个业务,平均提升30% 资源利用率,节省了上亿成本

近年来,随着互联网业务的发展,大数据类任务的资源需求呈指数级增长,资源成本问题突出。但各大权威机构的调研数据显示行业目前在线资源利用率普遍很低,平均维持在15%左右,资源浪费严重。对此,业内一直在进行诸多探索,在线离线混部被认为是解决该问题的终极方案。

由于很多大数据任务具有实时性要求不高、运行时间较短、使用碎片资源等特点,而在线应用的资源使用通常具有潮汐的特点,因此大数据任务比较适合复用在线应用的空闲资源,但混部也面临诸多核心技术难题,具体包括:

  1. 大部分混部系统只针对云原生场景,无法利用大量非容器化的在线空闲资源;
  2. 部分混部方案要求大数据必须云原生化改造,增加了依赖条件;
  3. 资源复用在粒度、灵活性、时间等方面策略都不够精细,导致利用率不高;
  4. 缺乏比较好的干扰检测机制,导致在线服务质量无法很好保证,限制了可以混部的场景;
  5. 在内核层、容器层缺乏完善的资源隔离、热迁移等机制,导致容易发生干扰,且处理干扰代价高;
  6. 混部调度器缺乏在离线应用调度的兼容性、高性能以及SLA保证。

解决这些问题,也是Caelus混部研发的初衷。

适用全场景

目前在线作业容器化已成为主流,但绝大公司的在线业务还有相当大未容器化的存量,或有些业务(如存储类服务)不适合容器化,这些没有经过容器化的在线应用,没有很好的资源隔离方式,但资源却非常可观,因此Caelus通过以后置容器的方式来管理在线应用,将这部分资源也充分利用起来,也减少了混部在很多公司、很多场景的限制。

对于离线任务,Caelus可以支持大数据任务,也可以支持任何非大数据类的任务。但由于大数据任务占到了离线任务的极高比例,并且离线大数据任务资源碎片化特点比较明显,而大数据又有很多是hadoop的生态,因此腾讯做了很多的兼容工作。同时,也看到有很多公司已经在云原生大数据领域有了比较不错的进展,对于使用Caelus来做混部更加自然。

充分兼容的架构设计

Caelus为了适应各种的混部场景,遵循了几个关键原则,主要包括:

  1. 不改变业务使用方式,便于业务迁移到Caelus混部平台。比如大数据任务仍然可以使用原有的方式提交job,如果原来是Yarn,Caelus实现了Yarn on k8s。如果大数据已经是on k8s的方式,也可以更方便的使用统一调度;
  2. 对基础生态零入侵。不论是对hadoop,还是对k8s,都是零入侵的实现,因此保证了对多种版本的兼容性,以及后续的可扩展性;
  3. 非耦合、可扩展的架构。在实现时,充分兼顾了未来的可扩展性,大多功能都是以插件的形式实现。

保障在线业务服务质量

Caelus挖掘的是在线业务的空闲资源,混部要优先保障在线服务的正常运行,当在线业务需要资源时,大数据业务要及时归还资源。Caelus内部集成了指标收集、资源画像、资源隔离、干扰检测、离线驱逐等模块,从调度、隔离、检测等方面全方位保障在线的服务质量。

对于资源隔离,Caelus采用全维度弹性资源隔离,包括CPU、内存、磁盘IO、磁盘空间、网络IO等。同时可以配合腾讯OS版本,进一步提升资源隔离效果。

在干扰检测方面,通过RDT、perf、eBPF等技术深度采集硬件、内核及业务相关指标数据,通过丰富的异常检测算法,判断在线服务是否受到干扰。例如,Caelus采用eBPF技术从内核中采集了更加丰富的diskIO和内存操作相关指标以及在线服务请求处理时长,以此来判断在线服务是否发生了性能影响,一旦识别出在线服务质量受到干扰,就会采取一定策略退还更多资源给在线服务,保证在线服务不受影响。

为大数据业务提供“质”的保证

混部虽然为大数据业务挖掘到了很多免费资源,但是也带来了比较差的服务质量,因为资源画像的本质是对未来的预测,资源隔离是对可能的干扰进行预防,但预测不会完全准确,预防也不能保证问题一定不会发生,所以在离线混部往往在干扰发生时陷入不得不牺牲离线任务的窘境,导致离线任务可能会被压制甚至被kill。

Caelus采取了一系列措施来实现“质”的保证,保证离线作业的成功率,比如为了更好地隔离在线和离线作业的磁盘IO及磁盘空间,Caelus会为节点动态地挂载Ceph RBD盘;引入Remote Shuffle Service,解决在线应用所在机器通常磁盘不足的问题,从而避免了CPU等计算资源的浪费,进一步提升利用率;Caelus除了对在线应用作资源画像之外,还对离线任务做画像,并且与调度相配合,来提升离线任务的服务质量。

同时,Caelus还提供了一个混部的“后悔药”——容器热迁移能力。容器热迁移是指在不终止离线任务的前提下将其移动到更适合的节点。由于热迁移一定发生在干扰产生之后,因此可以获得离线任务实际使用资源的准确认知,基于这种认知的调度决策会比基于预测的决策更有效,可以更好地保障离线任务的SLA。

另外,很多大数据场景下,大规模集群、大量短作业都对调度器的调度吞吐提出了很高的挑战,特别是云原生大数据,更是缺乏这种能力,因此,Caelus实现了自研的高性能调度器,是原生K8S调度器的10倍调度吞吐。

欢迎大家关注和贡献

目前 Caelus 已经在腾讯内部经过长时间规模化的考验,未来还将在更多网络模式下的容器热迁移、对机器学习等长时间运行的离线任务混部质量提升等方面进行持续迭代优化。

开源版本地址:

https://github.com/Tencent/Caelus

欢迎大家关注和star ,一起优化,同时也欢迎各位优秀的开发者加入腾讯大数据团队。

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册