集群排程架構的變革 一

2021-09-16 12:08:14 字數 1082 閱讀 6695

原文:

集群排程器是現代基礎設施很重要的元件,尤其在最近幾年有很大發展。架構從單體應用的設計進化成更靈活,分散的,分布式的設計。但是,目前很多開源能提供的還是單體應用或缺了關鍵特性。這些特性對於真實世界的使用者很重要,因為他們需要很高的使用率。

這是我們發布的第一篇關於在大集群上進行任務排程的系列文章,那些在亞馬遜,谷歌,facebook,微軟或雅虎實際在使用的。排程是乙個重要的話題,因為它直接影響操作集群的成本:乙個差排程器會導致極低的使用率,讓昂貴的機器空閒,導致浪費錢。高使用率,對於集群自己並不容易:除非仔細的決策,負載之間會互相影響。

這篇文章主要討論排程架構在近些年是如何進化的,以及這為什麼發生。圖一將這些不同的方式視覺化:灰色的方塊代表乙個機器,圓圈代表乙個任務,乙個裡面標著s的團員性代表乙個排程器。箭頭表示排程器做的決策,三種顏色代表不同型別的負載(例如,web服務,批量分析,機器學習)。

許多集群排程器 - 例如高效能計算(hpc)排程器,borg排程器,早期hadoop排程器和kubernetes排程器 - 都是單體的。乙個單例的排程程序泡在乙個機器上(例如,hadoop第一版的jobtracker,kubernetes的kube-scheduler)並且給機器排程任務。所有的負載被同乙個排程器來處理,所有的任務跑著相同的排程邏輯(圖1a)。這樣簡單並統一,卻導致了越來越複雜的排程器。舉個例子,可以看看paragon和quasar排程器,使用了機器學習的方式來避免在資源上相互衝突的負載排程。

在今天很多集群執行很多不同型別的應用(在早期只有hadoop mapreduce任務在執行)。因此維護單個的排程器實現處理混合型的負載很需要技巧,原因如下:

很明顯我們期望乙個排程器按不同的方式來處理長週期服務型任務和批量分析型任務。

不同的應用有不同的需求,要支援他們所有的需求需要給排程器新增許多特性,增加了邏輯和實現的複雜性。

排程器處理任務的順序成了問題:佇列效應(佇列頭部阻塞 head-of-line blocking)與積壓問題需要小心地設計排程器。

綜上所述,這聽起來是乙個工程上的噩夢 - 排程器的開發者會收到無窮無盡的特性需求。

集群排程架構的變革 二

二級排程架構 通過隔離資源獲取與任務來解決這個問題。這樣任務排程邏輯可以針對特定的應用,這也可以保持在集群間共享的能力。mesos的集群管理在這方面是先驅,同時yarn支援一部分功能。在mesos,資源是應用級別排程器提供的 被挑選和選中 而yarn允許應用級別排程器請求資源 在返回中得到配額 圖1...

Solr集群的架構

架構圖最近要搭乙個solr集群,我們先來了解一下架構。架構搭建需要用到solr zookeeper。看以下結構 要完成的集群結構如下圖 我們來了解一下solr和zookeeper。solr zookeeper 在此架構中,zookeeper扮演了三個功能,分別是集群管理,配置檔案的集中管理和分布式鎖...

BoCloud花磊 專注金融IT架構的變革

1 31 6 52 作為雲計算初創企業,博雲專注於金融行業,助力金融it架構的變革。bocloud花磊 專注金融it架構的變革 q 雲計算大會進行了第二天,提前稍微給我們透一點,下午帶來什麼樣的演講。花磊 今天下午我在金融分論壇將分享我們博雲在金融行業的一些感悟和一些解決方案。大家都知道金融方案進行...