阿里巴巴搜尋在離線統一排程
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在路上,讓我們和各合作伙伴一起砥礪前行。
附錄: