作者:索增曾(小紅書)、宋澤輝(小紅書)、張作偉(阿里雲)。
Koordinator 是基於阿里巴巴在容器排程領域多年經驗孵化的開源專案,目前在 K8S 生態中支援離線混合,但在 K8S 生態之外,仍有相當數量的使用者會在 Apache Hadoop Yarn 上執行大資料任務這種型別的資源管理系統。 雖然目前部分算力引擎提供了 K8S Operator 將任務連線到 K8S 生態,但不可否認的是,YARN 生態仍然保持著一定程度的活躍度,乙個典型的例子就是包括阿里雲在內的一系列主流雲廠商,仍然提供類似的 e-mapreduce該產品的受歡迎程度體現在使用者可以將大資料作業提交到 yarn 執行中。
小紅書是 Koordinator 社群的活躍成員,為了進一步豐富 Koordinator 支援的線下混合場景,社群聯合阿里雲、小紅書、螞蟻金服的開發者推出了 Hadoop Yarn 和 K8S 混合專案,支援向 Hadoop Yarn 提供超額認購的批量資源,進一步提公升集群資源的效率, 該專案已在小紅書生產環境中正式投入使用。
一般原則
在此之前,行業內部已經有一些關於k8s和紗線混用的做法,但由於落地場景的原因,大部分實現都對紗線系統本身做了相當侵入性的改造,在運維迭代方面對普通使用者並不友好。 為了讓更多的使用者在社群中享受開源技術的好處,Koordinator 在設計時將遵循以下原則。
離線作業的提交條目與 yarn 相同。 基於開源版本的 Hadoop 紗線,原則上不對紗線進行侵入式改造。 Koordinator 提供了混合資源,k8s pod 和 yarn 任務都可以使用,不同型別的離線應用可以共存於同乙個節點。 獨立 QoS 策略由 koordlet 管理,並與 Yarn Tasks 的執行時相容。 方案設計
ResourceManager 和 NodeManger 是 YARN 的核心元件,ResourceManager 負責控制端的任務接收和資源排程,NodeManager 負責任務生命週期管理。 在 yarn 和 k8s 混合部分場景中,RM 仍將作為 yarn 集群的核心元件獨立部署,nm 將以容器的形式部署。
Koordinator 新增了 koord-yarn-operator 模組,負責將批處理資源同步到 yarn rm。 為了更精細地管理資源,yarn 任務將獨立於 nm 的資源管理,nm 在部署時只需要自費申請批量混合資源即可。 yarn 任務的資源使用通過 cgroups(Linux ContainerExecutor 模式)進行管理,cgroup 路徑在 besteffort pod QoS 下,保證可以像其他 k8s pod 一樣在 besteffort group 下進行管理。
Koodlet 目前在單機上支援一系列 QoS 策略,這些策略也需要針對 yarn 場景進行適配。 對於資源隔離引數,如組標識、記憶體 QoS、L3 快取隔離等,koordlet 會根據設計的 cgroup 層次結構進行適配。 對於驅逐、抑制等動態策略,Koordlet 會新增乙個 sidecar 模組 koord-yarn-copilot,用於連線 yarn 場景中的各種資料和操作,包括 yarn 任務元資訊收集、資源指標收集、任務驅逐操作等,所有 QoS 策略仍將保留在 koordlet 中,koordlet 內部的相關模組會以外掛程式的形式連線 koord-yarn-copilot 介面。 同時,koord-yarn-copilot 的介面設計將保留一定程度的擴充套件性,未來可用於與其他資源框架的對接。
有關紗線和 k8s 混紡設計的更多詳細資訊,請參閱社群設計文件
業務背景
在降本增效的背景下,小紅書內部商業化和社群搜尋服務中存在大量演算法Spark任務,由於離線集群資源短缺,無法及時處理,且**集群在非高峰時段資源利用率較低另一方面,很大一部分 Spark 任務資源排程仍然在 yarn 排程器上執行基於這種情況,結合小紅書現有的離線混搭能力,通過打通 K8S 排程器和 yarn 排程器之間的資源檢視,並在單機側支援 Yarn Task 粒度的逐出和 QoS 保證策略,最終實現了保持離線服務提交入口和使用習慣不做任何變化的前提, 使大量Spark任務能夠在空閒時間資源上穩定執行,有效提高集群資源利用率,同時大大緩解業務資源壓力,有效降低離線業務資源使用成本。
在小紅書的實踐經驗中,有以下幾個關鍵技術點值得分享:
針對本地洗牌帶來的磁碟效能瓶頸,我們採用RemoteshuffleService技術,降低本地磁碟IO開銷,提公升IO效能,有效提高離線業務運營的效率和穩定性,另一方面有效避免IO層面的離線干擾。 除了大資料Spark場景外,在保障策略方面,還有轉碼、離線推理、訓練等業務場景,對保障策略進行了細粒度的優先順序排序和策略優化,如離線資源超報(壓縮資源、提高利用率)、單節點衝突處理、資源衝突等離線差異化QoS保障策略,或者滿足低優先順序逐出轉碼的離線資源要求。結合上述優化方法,最終實現了Spark任務的穩定高效執行和資源的充分利用。 落地福利
截至目前,小紅書的線下混合方案已大規模落地,並取得了以下經營成果:
覆蓋數萬**集群節點,為離線服務提供數十萬核計算資源,離線任務逐出率小於1%,混合操作後混合部分的CPU利用率基本不受影響,平均提公升8%和10%,部分平均CPU利用率可達45%以上, 大大提高了集群資源的使用效率。
K8s 和 Yarn 混合功能現已全面展開,Koordinator 團隊目前正在努力完成一系列發布前的準備工作,敬請期待!
如果你也有興趣參與到專案的合作共建中來,或者對K8S&紗線混紡事業部感興趣,歡迎你加入社群專屬論壇請在下方留言,我們會盡快與您聯絡。 參考訊息格式:
聯絡人 (gihub-id e-mail): , eg. @koordinator-dev相關鏈結:1] apache hadoop yarn您受僱於參與公司 學校組織名稱: eg. koordinator community
社群參與意向: eg.我希望能夠參與研發學習大資料和雲原生混合部門,在生產環境中實現K8S&YARN混合部門功能等。
是的"K8S&紗線混合部分"期待什麼:
2] e-mapreduce
3] 設計文件。
4] 專題討論區。
點選下面的鏈結,檢視Koordinator的詳細介紹和使用方法!