1. 发展历程
Hippo是搜索事业部调度系统团队自研的支撑集团内外多个BU搜索与推荐体系和阿里云上Opensearch/ES等的调度系统,经过了5年的快速发展,提供了可靠、简单、低成本的资源及应用托管方案,通过自动化运维、机器合池、智能弹性调度、混部和在离线统一调度等手段解决成本和效率的问题。
2. YARN on Hippo on Sigma
在2017年天猫双11,搜索在离线混合调度方案是YARN on Hippo on Sigma,在NC上通过Sigma(集团一层调度系统)拉起Hippo Slave容器交由Hippo Master管理,Topia向Hippo Master申请用于部署NM的资源(资源基本保证和弹性上限由Hippo决定)并拉起NM交由YARN RM统一管理,具有较强的通用性(衍生出多种X on Y的形态)和现实性,我们做到了2个月和集团资源池合并,平滑支持多种调度系统生态融合,对上层各类业务无感知,平稳经过了大促检验。但是,该方案有一定的局限性,不同调度系统有不同的资源和业务视图,优先级,管控等,资源QoS和业务SLA难以很好的定义和满足。因此,在搜索在离线调度系统需要深度融合的诉求下,我们走向了在离线统一调度。
3. AliYARN
2018年搜索工程技术调度系统团队和计算平台实时计算引擎团队合作,在社区YARN3.1的基础上开发了AliYARN3.1版本,以期解决搜索在离线调度系统深度融合的诉求,主要涉及以下几个方面:
* 在线服务与Blink流/批任务混合调度和部署* 搜索在线和离线资源合池
* 统一资源QoS、业务SLA标准、管控平台等
* 优化超卖、挤占、智能弹性调度和重调度等策略
* 提供Blink在线隔离能力
* 加强YARN在线服务调度能力
在开发过程中我们遵循的基本原则是
支持生态多样性和
走向社区,
AliYARN3.1版本主要新特性包括:
* 全局调度框架,异步多线程并发基于实时负载批量调度分配Guarantee和超卖Opportunistic container* 摆放策略,应用内和应用间,allocationTag/nodeAttribute上的多种表达式
* 多维资源,支持ip/disk/gpu/fpga等资源调度分配
* 资源分配计划持久化,保证在线服务类应用更高的资源稳定性和可靠性
* 资源更新接口增强
* 热点负载迁移和均衡
* 资源和业务解耦
* 基于优先级的抢占
* 优雅下线机器和container
* 单机资源QoS调度
* 实时更新RM调度配置和单机NM调度配置
* 更强的CPU/Memory/Blkio/DiskQuota/Network/resctrl等资源隔离特性
* 重调度的能力
* 请求干预,如G/O干预,资源干预,摆放策略干预等
* 请求分配过程跟踪和诊断
* Restful API增强等
通过Hippo Master桥接Hippo协议和YANR RM协议,对上层业务透明,将Hippo Slave使用为YARN NM上的一种executor,让YARN具备了更强大的多进程类VM和POD编排和托管的能力,从而实现了Hippo in YARN的方案,灰度上线中,拉开了在离线资源合池和统一调度的序幕。
4. 总结和思考
任何一种新的方案的落地都不可能一蹴而就,也并不代表新的方案就是今后唯一存在的调度形态,整个调度生态必然会随着面临的问题和场景的变化而发生变化。一个调度系统想要有强大的生命力,既要自身有能力直接管理和分配裸资源,也需要有能力生长在别的调度系统之上,跨不同地域、不同机房、不同部署域,将资源合理的分配给上层业务。永不止步,Hippo Federation和Hippo on K8S在路上,让我们和各合作伙伴一起砥砺前行。
附录: