助力成本最佳化,騰訊全場景在離線混部系統Caelus正式開源

Editor發表於2021-11-09

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 ,一起最佳化,同時也歡迎各位優秀的開發者加入騰訊大資料團隊。

相關文章