Firmament - 大规模集群任务调度

随着分布式计算集群规模的不断扩张,任务调度系统的稳定性成为了整个集群稳定的关键因素。随着容器技术的快速兴起,基于容器的计算平台被大量应用,任务调度的规模及频率快速上升,这对任务调度系统提出了更为严苛的挑战。常见的调度系统往往兼顾了准确度却牺牲了性能,容器调度的复杂性使得在准确和效率之间找到平衡点很难,尤其是在交互式调度的场景下,可取的解决方案更是捉襟见肘。本篇文章就以此为背景,介绍大规模调度场景下分布式任务调度的难点、解决策略及现有的一些方案。

\\

任务调度框架的设计目标

\\

计算任务通常分为两个大的类别,即以守护进程形式运行的长任务和以批处理形式运行的短任务,前者资源的使用率变化幅度小,而后者资源使用率变化大。本篇我们讨论的主要是针对计算密集型的场景,即以批处理形式运行的数据处理任务。

\\

调度系统的核心目标: 快速准确地为任务匹配合适的计算资源。但快速(Low Placement latency)和准确(High Quality Placement
\)这两个目标会产生矛盾,即必须在二者间权衡。尤其是在交互式调度场景下,只追求准确度而忽视效率会使得调度失去意义。

\\

调度系统的本质是为计算任务匹配合适的资源,使其能够稳定高效地运行,而影响应用运行的因素非常多,比如CPU、内存、网络、端口等等一系列因素都会影响应用运行的表现。于此同时,整个计算集群的资源使用情况是动态变化的,大量的应用被创建、销毁和迁移,调度决策的过程如果不够快,那么实际运行时面对的资源情况可能与决策时千差万别。

\\

ca24b7cd61dff9e51b29e06f643f8b25.png

\\

计算任务的调度不仅仅要考虑资源本身的状况,而且还要结合任务本身的优先级来考虑抢占式调度的情景。比如系统出现异常,临时增加诊断性任务,就必须以高于其他任务的优先级来运行。有资源抢占就涉及到任务驱逐、重调度等情况,这里面会涉及驱逐相关的算法策略、调度流程的复用等。

\\

目前的主流任务调度框架

\\

从目前常用的任务调度框架来看,Apache Mesos是面向数据中心资源管理的典型代表。Hadoop YARN调度器是面向计算任务的,与Mesos相似之处在于也是两层调度机制,不同在于考虑了资源抢占机制,能够处理任务的优先级对调度结果的影响。这些年发展迅速的Kubernetes也包含调度器,其本质上还是面向应用运行层面,默认调度器的策略比较丰富,扩展性也比较好,但在面对大规模的调度时,吞吐性能表现不是那么完美。

\\

Apache Mesos

\\
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值