阿里巴巴搜索在离线统一调度

1. 发展历程

        Hippo是搜索事业部调度系统团队自研的支撑集团内外多个BU搜索与推荐体系和阿里云上Opensearch/ES等的调度系统,经过了5年的快速发展,提供了可靠、简单、低成本的资源及应用托管方案,通过自动化运维、机器合池、智能弹性调度、混部和在离线统一调度等手段解决成本和效率的问题。

1536911660120-4c67968f-91dc-4058-bddc-9e

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难以很好的定义和满足。因此,在搜索在离线调度系统需要深度融合的诉求下,我们走向了在离线统一调度。
1536913879325-1afd5a3b-ff17-4ec7-898b-59

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的方案,灰度上线中,拉开了在离线资源合池和统一调度的序幕。
1536911753487-0ff2a0fc-230a-4735-8b61-1c

4. 总结和思考

        任何一种新的方案的落地都不可能一蹴而就,也并不代表新的方案就是今后唯一存在的调度形态,整个调度生态必然会随着面临的问题和场景的变化而发生变化。一个调度系统想要有强大的生命力,既要自身有能力直接管理和分配裸资源,也需要有能力生长在别的调度系统之上,跨不同地域、不同机房、不同部署域,将资源合理的分配给上层业务。永不止步,Hippo Federation和Hippo on K8S在路上,让我们和各合作伙伴一起砥砺前行。

附录:

猜你喜欢

转载自yq.aliyun.com/articles/674150