摘要:今年(2020)7月初,Volcano 發佈了1.0版本。1.0作爲里程碑版本,在Volcano整個規劃中起到了承上啓下的做用。這次發佈的1.0版本支持了GPU共享,做業動態擴縮容,批任務搶佔等功能,並主要增強了穩定性;同時,在1.0發佈後 Volcano也在線下討論了分佈式調度系統的將來發展的趨勢等。
在分析趨勢以前,咱們先看一下分佈式調度系統的歷史。早期分佈式調度系統以批處理系統爲主,例如九幾年的LSF/SGE/PBS等,這些批處理系統大規劃的使用在HPC領域,並且對做業級的調度進行大量的研究工做;後續由批處理系統延伸出多集羣、多組織資源共享的需求,便成了網絡計算。git
網絡計算與雲計算最大的不一樣是:網絡計算強調多組織的資源共享,而云計算強調雲廠商的集中式支持;這也是雲計算成爲主流的主要緣由:多組織之間共享須要完備的協議和足夠的安全支持,而云服務僅須要對用戶提供相應服務和安全,並不須要在多個雲廠商之間進行共享;隨着開源社區的發展,再將應用接口逐步統一,e.g. Kubernetes。Hadoop出現後,不只推進了分佈式調度系統中對數據的處理,同時也推進了開源軟件的生態。2012和2014是兩個重要的節點,Hadoop將資源管理層與領域框架層分開,隨後的領域框架也有機會構建本身的生態,e.g. Spark;同時,將資源管理層與領域框架分開也被普遍承認。github
在容器及Kuberentes流行後,憑藉其高資源利用率與隔離,環境標準化等優點,愈來愈多的人但願將這些批量計算應用統一到 Kubernetes 平臺上。算法
隨着各行各業的發展,涌現出愈來愈多的領域框架來支持業務的發展;這些框架都在相應的業務領域有着不可替代的做用,e.g. Spark, Tensorflow, Flink等。在業務複雜性能不斷增長的狀況下,單一的領域框架很難應對如今複雜的業務場景;所以如今廣泛使用多種框架達成業務目標,以下圖所示。segmentfault
但隨着各個領域框架集羣的不斷擴大,以及單個業務的波動性,各個子集羣的資源浪費比較嚴重;所以愈來愈多的用戶但願經過統一調度系統來解決資源共享的問題。在技術選型上,Kubernetes憑藉其優秀的擴展性得到大部分用戶青睞。安全
在批量計算任務向雲原生環境遷移的過程當中,對雲原生環境的算力提出了新的要求;各個廠商爲了應對這些新的需求,爲各個場景提供了不一樣架構的硬件,例如 鯤鵬,昇騰,X86,GPU等。當多種應用運行在統一平臺上時,須要雲原生調度系統可以對異構硬件資源進行統一的管理與調度,使用各類應用達到最優的資源配比。目前,硬件的信息經過kubernetes的 device plugin 機制提供,但Kubernetes的 device plugin 仍有一些不足,例如 沒法很好的支持硬件拓撲。在調度方面 Volcano 已經支持主流的調度策略,並在最新的1.0版本中支持了 GPU 共享,大大增長了GPU的利用率,有效下降了GPU的使用成本。微信
跨集羣一直是分佈調度系統解決大規模、災備等問題的主要解決方案;同時,爲了下降廠商綁定的風險,並最大限度兼顧不一樣雲廠商的優點,多雲環境下的負載高效分發逐漸成爲趨勢。在多雲的環境中,面向數據位置的優化,做業執行時間預估等問題都是須要調度系統解決的問題;在 Volcano 中,將經過多個項目實現跨集羣、跨雲的做業調度,例如 JobForward (#880)。網絡
調度算法在分佈調度系統中有大量的研究,從早期的批處理系統到近期的Borg,Volcano等;早期的批處理系統以特定場景的算法優化爲主,對於複雜的場景須要大量的計算,雖然有大量針對HPC和網絡的調度優化,但經常使用和落地的算法比較少。隨着人工智能的發展,愈來愈多的調度系統將會使用AI相應的能力對算法進行優化;在 Volcano 中,將經過AI的能力驅動 Volcano 中各個調度算法進行優化,並經過AI的能力提供新的調度算法。架構
分佈式調度系統是一個複雜的系統,須要多個組件共協做以提升總體的效率,例如 應用管理,調度,異構硬件管理,存儲等,僅靠調度器沒法完成這些工做。Volcano 做爲CNCF首個面向批量計算的分佈式調度系統,包含了應用管理,做業調度,異構硬件等多個組件和功能;其調度器兼容kubernetes調度策略,同時支持在線、離線兩種做業類型;控制器提供了統一的做業管理,支持多種做業的接入,包括 MPI, Tensorflow, MidSpore, Spark 等;設備插件提供了對異構硬件的支持,例如 1.0 版中支持了 GPU 共享。所以,Volcano面向分佈式調度系統的趨勢提供了完整的方案,能夠在多種場景下提升做業性能,資源使用率等。框架
由Volcnao項目發起者馬達主講的直播課程正在進行中,課程共有6期,從技術原理到實戰演練,涵蓋Volcano全景。分佈式
鎖定後續課程信息,獲取往期回放與講師PPT,請假助手微信(k8s2222)並備註「Volcano」。