伏羲 阿里雲分布式排程系統

2021-09-23 17:49:51 字數 2815 閱讀 6260

今天,大資料已經從概念發展到在很多行業落地生根。廣泛用在電商、金融、企業等行業,幫助行業分析資料、挖掘資料的價值。即使在傳統的醫療、安全、交通等領域也越來越多的應用大資料的技術。資料、價值二者之間的聯絡是計算,計算是大資料中最核心的部分。大資料計算就是將原來一台臺的伺服器通過網路連線起來成為乙個整體,對外提供體驗一致的計算功能,即分布式計算。

分布式排程系統需要解決兩個問題:

任務排程:如何將海量資料分片,並在幾千上萬台機器上並行處理,最終匯聚成使用者需要的結果?當並行任務中個別失敗了如何處理?不同任務之間的資料如何傳遞?

資源排程:分布式計算天生就是面向多使用者、多工的,如何讓多個使用者能夠共享集群資源?如何在多個任務之間調配資源以使得每個任務公平的得到資源?

由乙個jobtracker和若干個tasktracker組成,client可以提交多個任務執行。其特點和存在問題如下圖所示:

其特點和存在問題如下圖所示:

該系統與yarn類似,其特點和存在問題如下圖所示:

伏羲架構也是資源排程和任務排程分離,兩層架構。其優勢在於:

規模:易於橫向擴充套件,資源管理和排程模組僅負責資源的整體分配,不負責具體任務排程,可以輕鬆擴充套件集群節點規模;

容錯:某個任務執行失敗不會影響其他任務的執行;同時資源排程失敗也不影響任務排程;

擴充套件性:不同的任務可以採用不同的引數配置和排程策略,支援資源搶占;

效率:計算framework決定資源的生命週期,可以復用資源,提高資源互動效率。

海量資料如何並行處理?pc時代的多執行緒、多程序解決不了問題的時候,mapreduce通過化整為零、資料切片、分解、聚合解決了上述問題。傳統的mapreduce模型是map任務緊接著reduce任務,模式相對固定。但是實際過程中問題的處理涉及多個步驟,難以用乙個mapreduce模型描述。伏羲將mapreduce擴充套件到更廣闊的dag有向無環圖。伏羲任務排程過程如下圖所示:

map和reduce之間資料的傳遞取決於實際問題的邏輯,可能存在3種形式(1:1,1:n,m:n)。

伏羲將資料shuffle過程封裝成streamline lib,使用者不用關心shuffle細節。

資源排程解決的問題是如何將集群的cpu、memory資源在多個任務之間排程?目標是:集群資源利用率最大化;每個任務的資源等待時間最小化;能分組控制資源配額;能支援臨時緊急任務。其操作是當有空閒資源時,從等待佇列中選取乙個任務進行排程。

伏羲的資源排程方法如下圖所示:

每個job在提交時會帶乙個priority值,乙個整數值,越小優先順序越高(可以理解為排隊在前面)。相同優先順序按提交時間,先提交的優先順序高。fuximaster在排程時,資源優先分配給高優先順序的job,剩餘的資源繼續分配給次高優先順序job。如果臨時有高優先順序的緊急任務加入,fuximaster會從當前正在執行的任務中,從最低優先順序任務開始強制收回資源,以分配給緊急任務,此過程稱為「搶占」。搶占遞迴進行,直到被搶任務優先順序不高於緊急任務(換句話,不能搶比自己優先順序高的任務)。

當有資源時,fuxi master依次輪詢的將部分資源分配給各個job,並按優先順序分組,同一優先順序組內平均分配,有剩餘資源再去下一優先順序組分配。

多個任務組成乙個group,通常按不同業務區分。集群管理員設定每個group資源上限,稱為quota。每個group的job所分配的資源總和不會超過該group的quota。某個group沒用完的quota可以共享給其他group(按quota比例)。

在分布式集群中,故障是常態,所以分布式排程中需要容錯機制。好的容錯機制要求:正在執行的任務不受影響,對使用者透明,自動故障恢復,高可用。

上圖是fuxi master重啟恢復的示意圖。fuxi master重啟後會通知tubo,上報在該tubo上分配的情況。

分布式系統設計主要目標之一就是橫向擴充套件,也叫水平擴充套件。

伏羲系統中定義了可信區域邊界,並且提供了全鏈路的訪問控制,比如:client端不可信區域訪問伏羲系統,伏羲系統內部rpc通訊,系統訪問外部儲存等資源。伏羲安全訪問驗證精細到每個rpc,在tubo上執行**時,伏羲提供程序級別沙箱(sandbox)隔離。系統設計時要求節點上多個程序間效能隔離,不能互相干擾。

伏羲分布式排程資源任務兩層架構,支援超大規模,水平擴充套件,提供優先順序、搶占、quota等靈活的資源排程功能。dag任務排程,高效容錯和長尾處理,任務之間有效隔離,提供全鏈路安全acl。

分布式排程系統 任務排程

這就是分布式任務排程所要解決的問題 舉個栗子 如何快速的做出大量的熱狗?如果將每乙個乙個熱狗按流程做的話,可見工作量會十分巨大而且效率低下 對任務按需求切分成多個子任務 再對所有的中間態結果進行reduce合併,得到最終結果 我們換個角度理解mapreduce操作 還會有一些廚師,按照一定的比例,將...

分布式排程

1.在集群伺服器環境下排程任務 乙個網際網路應用不斷擴大單台伺服器是不夠的,同樣的 工程需要copy部署到多台伺服器,這樣的處理形式稱之為伺服器集群。而伴隨著伺服器集群帶來了乙個問題,比如定時的後台任務,例如資料統計 郵件傳送等我們希望這些任務同一時間只有乙個任務在進行,但是集群伺服器上面每台伺服器...

docker搭建分布式排程系統

一 整體規劃圖 二 docker中搭建排程服務例項 分別在兩台機器上建立job admin例項 docker run d p 8090 8090 name job admin 2.1.1 0 restart always v data ucm2 data ucm2 rw e params sprin...