目錄0x02 分析
2.2 關鍵定製
2.3 具體定製
0x03 yarn的未來規劃
yarn是集群資源管理層,分成了三個模組:
resourcemanager 管理整個集群的資源;
nodemanager 管理整個機器資源情況;
yarn 在快手的應用實踐與技術演進之路
yarn 在位元組跳動的優化與實踐
可以看出來兩個公司應用領域都差不多:離線作業/流式作業/模型訓練三大場景。
快手主要是:根據不同領域做不同定製。
位元組跳動是:沒有針對領域做不同定製(當然也可能是沒有披露)。
2.1.1 yarn在快手的應用特點
yarn上面服務了一些經典的離線計算,像hivesql,最終回變成乙個mr/spark作業或者pesto查詢在yarn上執行。2.1.2 位元組跳動 yarn 應用特點對於流式的實時資料處理需求,我們上層有乙個青藤平台來託管flink在yarn上執行。
對於模型訓練的場景,我們是用xlearning作為排程器,排程tensorflow,xgboost,mpi等訓練學習引擎。
基於spark和xlearning,我們打造了亞瑟機器學習平台,可以把資料處理流程和一些模型的訓練、**流程做乙個打通,方便使用者使用。
位元組跳動的 yarn 是在 16 年從社群當時最新的 2.6.0 版本中 fork 出來的,主要承載著公司內的離線作業/流式作業/模型訓練三大場景。由於公司內的 yarn 服務規模巨大、場景複雜,遇到了各種問題,在社群版本沒有提供解決方案之前,內部研發同學定製了許多內容來解決具體問題,經過 4 年來上千次的修改,公司內的版本已經跟社群的版本相差較大。可以看到:穩定性,呼叫效能和利用率是兩個公司都注重的。
此外快手提到了 「小io優化」。位元組跳動提到了「異地多活」。
2.2.1 yarn在快手的應用特點
對yarn的一些改動,主要分成四個方面:2.2.2 位元組跳動 yarn 應用特點(1)集群穩定性方面的優化。
(2)對yarn的搶占機制做了優化。
(3)yarn的排程效能提公升。
(4)計算集群小io優化。
這些關鍵定製主要包括四個方面:下面把兩個公司具體優化點整合起來介紹。
2.3.1 事件處理
yarn中幾個模組之間有大量的事件傳遞和處理,其中勢必有缺陷和可優化之處,這就是業界優化之處,比如優化冗餘,解耦合。具體體現在速度提公升,對io操作優化,集群啟動上。
2.3.2 排程方面
yarn有三種排程器,都不能滿足兩個公司的需求,兩個公司都對排程做了優化,或者乾脆重新寫了排程器。
2.3.3 資源方面為了提高排程的擴充套件性,我們重寫排程邏輯,開發了kwaischeduler。
處理很多的小io問題。很多的小io,導致整個集群磁碟util非常高,但是磁碟讀寫速度非常慢。針對這個問題,我們對mr的shuffle過程做乙個cache。在shuffle過程中,當乙個請求來的時候,我們分析一下這次shuffle過程有沒有可能產生比較多小io,可以按需把shuffle資料放到cache裡,只需要一次大的io把資料搬到cache裡面,後面的shuffle請求可以直接從cache裡面讀,消滅了後面多次小io,通過這個我們優化,提公升了整個的集群io效能。
從現實看,資源的隔離和利用都有缺陷,所以兩個公司都做了細化、優化。
2.3.4 穩定性這點和下面一點屬於穩定性方面。
2.3.5 單點問題本部分和下一部分都是為了特殊場景做改造。container 分級與驅逐
非受控 container 的清理機制
為了彌補原生 yarn 在低延遲和全域性視角上的缺陷,我們開發了乙個全新的排程器 gang scheduler。
2.3.7 訓練場景
2.3.8 單集群規模綜合兩個公司對具體未來規劃,總結如下,基本能看出來主要思路就是:提高利用率,豐富功能,擴大應用領域。我們現在單個yarn集群規模在國內是top級的,但是單集群畢竟是容量有限,我們後面會考慮多集群建設的方案,社群的federation方案在跨idc方面有些問題,如何在業務透明的前提下,建設跨idc集群有非常多問題需要解決。
mysql 解決方案 Mysql解決方案
mysql解決方案 一 centos7安裝mysql5.7 wget rpm uvh mysql80 community release el7 3.noarch.rpm yum repolist all grep mysql 發現預設mysql8.0是預設安裝的,然而我們要安裝的是mysql5.7...
OSSIM解決方案
大多數主流安全產品針對的是計算機單一安全缺陷,他們更多的是提供某一單獨的安全保護功能。目前安全領域內還沒有一套相對完整系統安全解決方案,而且由於主流商業安全軟體的閉源特性,讓我們對其自身的安全特性也不能夠完全信服。隨著軟體開源趨勢的不斷推進,現在出現了很多甚至可以說效能毫不遜色於任何商業軟體的安全工...
android OOM解決方案
解決oom的常用方案 記憶體限制是android對應用的乙個系統級限制,作為應用層開發人員,沒有辦法徹底去消滅這個限制,但是可以通過一些手段去合理使用記憶體,從而規避這個問題。以下是個人總結的一些常用方法 1 快取影象到記憶體,採用軟引用快取到記憶體,而不是在每次使用的時候都從新載入到記憶體 2 調...