當前位置:首頁 > 公眾號精選 > 架構師社區(qū)
[導讀]隨著公司業(yè)務的快速發(fā)展,離線計算集群規(guī)模和提交的作業(yè)量持續(xù)增長,如何支撐超大規(guī)模集群,如何滿足不同場景的調(diào)度需求成為必須要解決的問題。

導讀:隨著公司業(yè)務的快速發(fā)展,離線計算集群規(guī)模和提交的作業(yè)量持續(xù)增長,如何支撐超大規(guī)模集群,如何滿足不同場景的調(diào)度需求成為必須要解決的問題。基于以上問題,快手大數(shù)據(jù)團隊基于YARN做了大量的定制和優(yōu)化,支撐了不同場景下的資源調(diào)度需求。

今天的介紹會圍繞下面四點展開:

  • 調(diào)度相關背景及快手數(shù)據(jù)規(guī)模與場景

  • 快手調(diào)度器Kwai scheduler介紹

  • 多調(diào)度場景優(yōu)化介紹

  • 其他工作&未來規(guī)劃

01
快手數(shù)據(jù)規(guī)模場景

1. 快手數(shù)據(jù)規(guī)模

目前快手離線計算單集群數(shù)萬臺機器,每日處理數(shù)百P數(shù)據(jù)量,百萬級別作業(yè),對大數(shù)據(jù)存儲,計算,調(diào)度有非常大的挑戰(zhàn)。首先介紹下快手大數(shù)據(jù)架構體系技術棧。

2. 快手大數(shù)據(jù)體系架構介紹

快手超大規(guī)模集群調(diào)度優(yōu)化實踐

快手大數(shù)據(jù)架構底層采用hdfs/hbase構建數(shù)據(jù)存儲層,用于支撐海量數(shù)據(jù)的存儲;上層是YARN資源調(diào)度層,實現(xiàn)百萬級別的作業(yè)和任務調(diào)度;再上層是各種計算引擎構成的執(zhí)行層,如Flink、MR、SPARK,PRESTO,TensorFlow等計算框架用于執(zhí)行業(yè)務的計算任務,最上層屬于應用層如FLink作業(yè)托管平臺,機器學習平臺,以及SQL提交平臺,面向用戶提供服務。本次分享的YARN屬于資源調(diào)度層,用于把計算引擎的Task快速調(diào)度到合適的機器上。

3. YARN資源調(diào)度系統(tǒng)介紹

YARN背景介紹:

快手超大規(guī)模集群調(diào)度優(yōu)化實踐

YARN是Apache Hadoop旗下的頂級項目,Hadoop 2.0發(fā)布時引入,主要用于解決hadoop1.0面臨的集群調(diào)度性能和擴展性問題。通過把集群資源管理和作業(yè)資源管理拆分成ResourceManager和ApplicationMaster兩個組件,實現(xiàn)調(diào)度架構從單級架構向二級架構的轉(zhuǎn)變,提升了集群性能。YARN專注于集群資源管理和調(diào)度,包含ResourceManager和NodeManager兩個核心組件;ResourceManager負責集群資源管理和分配;NodeManager在每臺機器上部署,負責管理所在機器上資源。

YARN調(diào)度器演進過程:

快手超大規(guī)模集群調(diào)度優(yōu)化實踐

原生YARN在調(diào)度過程中,先選擇一個節(jié)點,并對隊列進行排序,遞歸從root隊列找到最優(yōu)的葉子隊列,再對葉子隊列中運行的app進行排序,選出app在這個節(jié)點上調(diào)度資源。隨著集群規(guī)模增長和隊列數(shù)目的增加,調(diào)度耗時越來越長,調(diào)度吞吐成為制約集群規(guī)模的主要瓶頸。為提升調(diào)度吞吐,調(diào)度器的發(fā)展經(jīng)歷了三個階段:第一階段通過心跳觸發(fā)調(diào)度過程,實現(xiàn)比較簡單,但心跳處理邏輯和調(diào)度邏輯在同一個線程,調(diào)度和心跳處理邏輯會相互影響。第二階段將調(diào)度邏輯剝離到單獨的線程以降低調(diào)度和心跳邏輯耦合性,從而提升了調(diào)度性能;但調(diào)度邏輯和心跳處理共享一把大鎖,并且調(diào)度過程中對隊列排序占據(jù)大量時間,整體性能提升有限。第三階段引入全局調(diào)度器的概念,可以并發(fā)對隊列資源進行調(diào)度,最終通過統(tǒng)一的commit過程保證調(diào)度結果一致性。多線程并發(fā)調(diào)度可以提升調(diào)度性能,但沒有解決調(diào)度過程中排序耗時過多問題,并且引入的多線程調(diào)度,會損害調(diào)度結果的公平性。

快手基于fair scheduler 單線程調(diào)度版本,不斷優(yōu)化單線程調(diào)度的性能,但由于單線程調(diào)度的局限性,在集群節(jié)點接近萬臺規(guī)模時,集群性能出現(xiàn)瓶頸;上線自研的kwai scheduler調(diào)度器后,在集群調(diào)度性能上有極大的提升,目前單集群規(guī)模已達數(shù)萬臺,同時在調(diào)度策略方面,支持可插拔的調(diào)度架構,方便擴展新的調(diào)度策略。

02
Kwai scheduler調(diào)度器介紹

kwai scheduler主要用于解決調(diào)度性能問題以及調(diào)度策略擴展性問題。性能方面,傳統(tǒng)的調(diào)度器一次只能調(diào)度一個task,并且在調(diào)度過程中需要對所有隊列以及APP進行排序,有很大的資源開銷;kwai scheduler采用多線程并發(fā)批量調(diào)度模式,一輪可以調(diào)度數(shù)十萬個task。在調(diào)度策略方面,傳統(tǒng)的調(diào)度器先選擇節(jié)點再選擇APP,難以擴充新調(diào)度策略。kwai scheduler先選擇 APP再選擇節(jié)點,從而APP可以看到所有節(jié)點信息,通過對節(jié)點進行過濾與打分排序,可以針對不同場景擴展不同的調(diào)度策略。

1. 基于集群狀態(tài)做全局批量調(diào)度

快手超大規(guī)模集群調(diào)度優(yōu)化實踐

Kwai scheduler整體架構如上圖所示,ResouceManager中RPC層和事件處理層基本保持不變,主要改動點是將調(diào)度邏輯做一個整體的剝離替換原先的fair scheduler調(diào)度。每次調(diào)度過程中拉取集群狀態(tài)做鏡像,基于集群鏡像并發(fā)批量調(diào)度,調(diào)度完成后,將調(diào)度結果推送回去。App可以通過原有的心跳接口獲取調(diào)度container。

2. Kwai scheduler 調(diào)度流程

快手超大規(guī)模集群調(diào)度優(yōu)化實踐

Kwai scheduler 基于集群鏡像(節(jié)點的資源使用情況;隊列的最小資源和最大資源量,以及當前資源使用量,APP資源使用量和資源需求量等)進行資源的預分配,計算出每個APP可以在這一輪調(diào)度中分配多少資源。APP根據(jù)預先分配到的資源量,并發(fā)去競爭節(jié)點上的空閑資源,如果競爭成功,完成APP的資源調(diào)度過程。

APP資源調(diào)度過程中,可以根據(jù)不同場景為 APP配置不同的調(diào)度策略,根據(jù)調(diào)度策略過濾節(jié)點并計算每個節(jié)點分數(shù),選出分數(shù)最高節(jié)點嘗試進行資源分配。調(diào)度過程中基本都是CPU密集操作,避免了鎖的干擾(不同APP競爭節(jié)點資源時有輕量的自旋鎖),有非常高的性能。并且不同的APP可以多線程并發(fā)調(diào)度,具備很好的擴展性。

3. Kwai scheduler 調(diào)度策略

快手超大規(guī)模集群調(diào)度優(yōu)化實踐

Kwai scheduler 調(diào)度策略主要實現(xiàn)filter和score接口。filter接口用于過濾節(jié)點,score根據(jù)節(jié)點信息,為節(jié)點進行打分,然后選出最優(yōu)節(jié)點進行調(diào)度。比如APP task打散策略,根據(jù)每個節(jié)點分配的APP資源量,對節(jié)點進行打分,節(jié)點上分配的APP資源量越多,節(jié)點分數(shù)越低,從而把APP的task在集群范圍內(nèi)打散到不同的節(jié)點。

4. Kwai scheduler調(diào)度線上效果

Kwai scheduler 上線后,支撐單集群數(shù)萬臺機器,1萬+作業(yè)同時運行,每天調(diào)度吞吐量峰值5w/s+,資源分配率93%+,同時支持不同的調(diào)度場景。

03
調(diào)度場景優(yōu)化

1. 離線ETL場景

離線場景下如何保障核心作業(yè)的SLA是比較核心的問題。在快手,核心作業(yè)和普通作業(yè)在同一個隊列中,通過完善作業(yè)分級保障能力和異常節(jié)點規(guī)避能力,保障核心作業(yè)的SLA。

離線ETL場景中經(jīng)常會遇到以下情況以及相應的優(yōu)化方案:

① 其他隊列作業(yè)大量占據(jù)資源不釋放

通過優(yōu)化隊列間資源搶占來解決這個問題。為防止搶占影響過大,默認情況下只有高優(yōu)先級核心作業(yè)觸發(fā)搶占,并且會限制每輪搶占的最大資源量。搶占過程中根據(jù)作業(yè)優(yōu)先級,饑餓等待時間等條件動態(tài)計算每個隊列可以搶占的資源量,從而把資源傾斜給優(yōu)先級更高,饑餓等待時間更長的作業(yè)。

② 隊列內(nèi)低優(yōu)先級作業(yè)占據(jù)大量資源不釋放

在生產(chǎn)場景下如果低優(yōu)先級作業(yè)占用大量資源不釋放,導致優(yōu)先級比較高的任務無法獲取到足夠資源,從而導致產(chǎn)出延遲。為解決這個問題提出基于虛擬隊列來保障高優(yōu)先級作業(yè)產(chǎn)出。所謂虛擬隊列,是在物理隊列下,按照一定邏輯規(guī)則(比如優(yōu)先級)抽象出的邏輯隊列。每個虛擬隊列有一定的資源配額,并且會觸發(fā)物理隊列內(nèi)部的搶占,從而解決上面的問題。

③ 低優(yōu)先級作業(yè)占據(jù)app solt不釋放

為方便AppSlot資源的管理,抽象出minApp概念,如果App啟動時,隊列running App小于minApp,將會立刻啟動App,不會受限于父隊列的maxRunningApp,這樣在隊列層面保障有可預期的app slot。但同樣存在一個問題,隊列內(nèi)部低優(yōu)先級作業(yè)占據(jù)大量AppSlot不釋放,導致高優(yōu)先級作業(yè)啟動延遲。為此提出了App Slot搶占功能。如下圖所示,如果發(fā)現(xiàn)高優(yōu)先級作業(yè)(P0)長時間pending不能啟動,掃描隊列內(nèi)runningApp,選擇低優(yōu)先級作業(yè)進入睡眠模式(不再調(diào)度新task,極端情況下回收task)從而釋放出slot資源,保障高優(yōu)先級作業(yè)能及時啟動。

快手超大規(guī)模集群調(diào)度優(yōu)化實踐

④ 回溯作業(yè)影響生產(chǎn)作業(yè)

回溯作業(yè)的特點在于大量提交多個作業(yè),如果不加控制可能會影響生產(chǎn)作業(yè)的產(chǎn)出。主要方案是限制回溯作業(yè)最大資源量和最大運行APP數(shù)目,將影響控制在一定的范圍以內(nèi)。但是限制最大資源量和運行數(shù)目導致大量回溯作業(yè)在yarn處于pending狀態(tài),對yarn有比較大的壓力,通過與上游調(diào)度系統(tǒng)打通,反壓上層工作流調(diào)度系統(tǒng),阻止新提交的回溯作業(yè),從而減輕了YARN負載。對于已經(jīng)提交到y(tǒng)arn上的作業(yè),會限制每個隊列最大pending app個數(shù),從而保障總體pending app數(shù)目可控。

⑤ 高優(yōu)先級作業(yè)大塊資源請求不能及時滿足

原有的Reserve機制中,調(diào)度器可以reserve一批節(jié)點,不再調(diào)度新task,等待節(jié)點上自然釋放資源。如果被reserve節(jié)點資源長時間不釋放,如何處理?針對這個場景開發(fā)了reserve搶占功能,用于搶占reserve節(jié)點上的低優(yōu)先級的container,從而保障節(jié)點上有足夠的空閑資源啟動高優(yōu)先級作業(yè)。

⑥ 規(guī)避異常節(jié)點,避免核心作業(yè)長尾

通過采集節(jié)點物理指標,task失敗率,task運行速度,以及shuffle失敗率等,將此節(jié)點標記為異常節(jié)點,不再調(diào)度新Task。從而盡量減少異常節(jié)點的影響范圍,規(guī)避其導致的Task長尾,失敗問題。

2. Adhoc即時查詢場景

AdHoc場景主要著力于提升每個用戶的查詢體驗。

通過虛擬隊列技術,從user維度來劃分虛擬隊列,實現(xiàn)基于user公平的資源的分配,配合基于user的資源搶占,從而避免大量資源被某一個用戶占用,導致其他用戶長時間得不到資源。

快手超大規(guī)模集群調(diào)度優(yōu)化實踐

3. 機器學習訓練場景

機器學習訓練場景下,資源需求呈現(xiàn)all or nothing特點,在隊列資源緊張時,如果基于yarn原生的公平調(diào)度方式,為每個app分配部分資源,容易產(chǎn)生資源分配死鎖問題。為此我們采用APP輪轉(zhuǎn)調(diào)度策略,采用類似FIFO策略,保障頭部APP(頭部會動態(tài)變化,輪轉(zhuǎn)策略名稱的由來)的資源需求,避免死鎖問題。

4. Flink實時作業(yè)場景

FLink實時場景下,主要介紹故障發(fā)生時,如何盡量減少故障的影響范圍,以及如何快速恢復故障作業(yè):

  • 通過cpu均衡調(diào)度,避免機器cpu熱點。

  • 通過AM失敗節(jié)點規(guī)避機制,避免調(diào)度到AM失敗機器。

  • NM掛起(不調(diào)度新Task,介于RUNNING和LOST狀態(tài))機制,防止NM異常退出導致Task失敗。

  • 基于Hawk秒級發(fā)現(xiàn)節(jié)點宕機,快速進行作業(yè)恢復。

快手超大規(guī)模集群調(diào)度優(yōu)化實踐

雖然可以基于Hawk秒級發(fā)現(xiàn)節(jié)點宕機,但作業(yè)恢復過程可能需要幾分鐘(申請資源,下載jar包,job recover等)。我們通過資源冗余分配策略,優(yōu)化掉其中資源申請和下載jar包過程,最終實現(xiàn)秒級作業(yè)恢復。

04
其他工作&未來規(guī)劃

支持超大規(guī)模集群:

主要目標支撐十萬量級的集群規(guī)模,目前基于社區(qū)的federation方案進行改造。

Hadoop跨IDC集群建設:

受限于公司物理集群規(guī)劃,離線集群會分布在不同的IDC,如何基于有限的跨IDC帶寬,對數(shù)據(jù)和計算進行合理排布,是一個非常有挑戰(zhàn)的問題。

在離線資源混合部署:

基于在線機器的空閑資源運行離線任務,在資源調(diào)度和隔離方面有很多工作要做,目前已經(jīng)取得一定收益。

在離線資源統(tǒng)一管理:

目前YARN托管離線調(diào)度,k8s托管在線調(diào)度,如何讓資源更彈性更統(tǒng)一?我們也在做一些嘗試。

流shuffle服務建設:

shuffle過程產(chǎn)生大量大量的隨機IO,通過流shuffle服務接管MR和SPARK shuffle過程,將隨機IO轉(zhuǎn)變成順序IO,提升集群算力并減少在離線混部過程中IO影響。

大家如何有興趣或者疑問可以隨時聯(lián)系我,也歡迎考慮快手大數(shù)據(jù)架構的工作機會,一起解決更有挑戰(zhàn)的事兒。

今天的分享就到這里,謝謝大家。

																															
																															
																															
																															


																															
																															
																															
																															

免責聲明:本文內(nèi)容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉