火山引擎 DataLeap 計算治理自動化解決方案實踐和思考

来源:https://www.cnblogs.com/bytedata/archive/2023/11/13/17828786.html
-Advertisement-
Play Games

本文旨在探討火山引擎 DataLeap 在處理計算治理過程中所面臨的問題及其解決方案,並展示這些解決方案帶來的實際收益。主要內容包括:探討面臨的痛點和挑戰、提供自動化的解決方案、分析實踐效果和收益、提出結論和未來展望。 ...


更多技術交流、求職機會,歡迎關註位元組跳動數據平臺微信公眾號,回覆【1】進入官方交流群

 

【導讀】本文旨在探討火山引擎 DataLeap 在處理計算治理過程中所面臨的問題及其解決方案,並展示這些解決方案帶來的實際收益。主要內容包括:

  • 探討面臨的痛點和挑戰

  • 提供自動化的解決方案

  • 分析實踐效果和收益

  • 提出結論和未來展望

 

痛點 & 挑戰

在分析業務痛點和挑戰之前,先要清楚業務現狀。

 

  1. 現狀概覽

位元組跳動數據平臺目前使用了 1 萬多個任務執行隊列,支持 DTS、HSQL、Spark、Python、Flink、Shell 等 50 多種類型的任務。

自動計算治理框架目前已經完成了離線任務的接入,包括 HSQL、Hive to X 的 DTS 任務、AB test 和底層通過 Spark 引擎執行的任務,涉及到上千個隊列,國內 可優化任務 170 萬+ 的任務優化覆蓋率達到 60%+。另外實時任務的優化也在同步推進。

 

  1. 痛點:手動調參常⻅問題

 

在手動調參的過程中,我們常常面臨以下困境:

  • 系統複雜度:

大數據計算系統與數據處理架構涵蓋多種技術和組件,對其參數的調整需深刻理解各組件的運作機制及其相互依賴。以 Spark 為例,其擁有上百個適用於不同場景的參數,而這些參數可能互相影響,增加了調優的難度。過去,我們通常依賴單一任務模板進行少量參數調整,雖然此法能讓單項任務搶占資源,卻難以保證整體業務的及時性和穩定性。

  • 動態變化:

計算環境、數據量和業務需求可能隨時變動,這要求調優工作需具備高度的靈活性和適應性,以迅速應對各種變化。

  • 專業知識缺乏:

通常由數據分析師來執行優化任務,但他們更側重於業務場景而非底層邏輯。因此,我們希望通過自動化方案沉澱專業知識,提供一站式解決方案。

  • 一致性與可重覆性缺失:

不同人員操作可能導致不一致的結果,手動調優往往難以復現。例如,昨天的分區調優效果良好,但明天可能因數據量增加而導致記憶體溢出(OOM),後續運維包括復盤將需要投入大量時間成本。

 

  1. 挑戰:複雜的優化場景和目標

 

針對業務方的優化需求,通常包括提高系統穩定性、降低運營成本、解決任務阻塞及提升系統健康度等多個方面。為選擇最適合的優化策略,需深入理解以下幾個常見場景:

  • 穩定性與健康度:提高穩定性通常意味著需要犧牲一些資源利用率以保障運行效率;而提升健康度則旨在追求較高的資源利用率,儘管可能會對運行效率產生一些影響。

  • 成本優化:主要包括回收無效成本和最大化資源利用率兩個方向。由於業務方常存在大量未被充分利用的資源,我們需要協助他們提升任務的運行效率和縮短產出時間。

  • 解決阻塞:通過調整算力和記憶體等參數來緩解阻塞。若參數調優無法完全解決阻塞問題,就需要與用戶協作,優化任務的調度時間。

 

  1. 業務優化場景需求分析

 

針對之前提及的優化場景,以下是一些具體的解決策略:

  • 穩定性優化:

推薦資源配額應基於任務的實際使用量,同時為保障穩定性,將近 7 天的波動和失敗指標納入權重計算,確保推薦參數能適應業務的波動和增長。

  • 隊列阻塞解決:

在 CPU 阻塞而記憶體正常時,維持總算力不變,減少物理核、增加虛擬核,並相應調整記憶體配額。

在 CPU 正常而記憶體阻塞時,降低總算力,從而降低任務申請的物理記憶體總量。

當 CPU 和記憶體同時阻塞時,適度降低算力或減少虛擬核,以保任務運行性能在預期範圍內。

註意:如參數調優未能解決阻塞問題,需與調度系統協同,將任務調度至合適時段,以徹底解決阻塞問題。

  • 計算健康分提升:

CPU 利用率:對於小任務,可減少物理核、增加虛擬核。對普通和大任務,需評估是否調整算力,進而確定調優方向。

記憶體利用率:通常不宜將記憶體利用率設置過高以避免 OOM,首先按需分配資源,然後根據記憶體利用率調整虛擬核。例如,當利用率低於 50%時,提升虛擬核。後期將支持 1/1000 核的微調以逼近理想的記憶體利用率閾值。記憶體調優涵蓋多個階段如 map、shuffle 和 reduce 等,每階段的處理性能和參數配置有所差異。遇到記憶體調優瓶頸時,可考慮進行 shuffle 優化。

  • 成本優化:

Quota 回收型:實際使用量應低於申請量,如需回收 20%,則需確保空閑量超過 30%的時間占比維持在 95%以上,同時保有 10%的可用餘量。

Quota 充分利用型:

CPU 型優化:可增加虛擬核或物理核,但由於增加虛擬核可能導致超發,為保障隊列穩定性,建議增加物理核。

記憶體型優化:增加算力、減少物理核、增加虛擬核,以釋放更多記憶體資源,確保記憶體得到充分利用。

 

自動化解決方案

接下來講解針對上述場景的自動化解決方案。

 

  1. 解決方案:實時規則引擎

 

首先,我們介紹實時規則引擎及其功能:

  • 參數實時推薦與應用:該引擎能夠實時收集 Yarn container、Spark event 和 Dtop status 等數據,通過基於 app ID 的聚合,統計所有核心與觀測指標,並將數據記錄至歷史資料庫中。在連續的 3-7 天觀測期內,引擎會根據收集到的數據進一步優化參數推薦,最終將推薦參數推送到 Spark 等執行引擎,並實時監控任務的執行情況。

  • 啟髮式規則的應用:利用基於規則樹的啟髮式規則,針對不同的場景,我們可以設定不同的優化目標和閾值,為優化過程提供指導。

  • 資源使用評估:通過分析最近 3-7 天的資源使用累積指標,實時規則引擎可以評估整體的資源波動情況,為進一步的優化提供數據支持。

  • 穩定性與健康分策略:

    普通策略:旨在保障系統的穩定性,通過分析實際的資源使用量來提供參數推薦。

    激進策略:著眼於提高資源利用率,不斷探索任務的性能邊界,同時能自適應地應對 OOM 風險,保障系統的運行效率。

為確保系統的穩定運行,一旦任務實例失敗,實時規則引擎會自動將參數回滾至上一個穩定版本。若連續失敗多次,則暫停該任務的優化過程,直至任務恢復穩定運行。我們每周會對失敗案例進行復盤分析,以持續優化和改進實時規則引擎的性能和準確性。

 

  1. 解決方案:實時監控 & 自適應調整

我們還實施了一系列實時監控和自適應調整方案,以增強 Spark 等底層引擎的性能和穩定性:

  • OOM 自適應處理:針對易發生 OOM 的任務,我們將其調度至獨立的 executor,讓其獨享 container 資源,從而在不增加總資源的前提下,減緩 OOM 的發生,保障任務的穩定運行。

  • Shuffle 溢寫分裂管理:我們設定了每個容器的 Shuffle 磁碟寫入量閾值。一旦寫入量超過閾值,系統會自動分裂出新的容器,避免單個容器的溢寫,同時減輕 ESS 的壓力。

  • Shuffle 分級限流機制:根據任務的優先順序,分配不同的查詢處理速率(QPS)。高優先順序任務將獲得更多的 QPS,而低優先順序任務的 QPS 會相應限制,以防止 ESS 服務過載,確保高優先順序任務的順利執行。

  • 節點黑名單優化:為了降低任務失敗率,我們實現了節點黑名單機制。當節點因特定失敗原因被標記時,任務會儘量避免在該節點上執行。我們還提供了設置黑名單節點數量上限的功能,防止過多節點被拉黑,影響整個集群的可用性。

  • 失敗回滾與參數管理:當任務實例失敗時,系統會自動將參數回滾至上一個穩定版本。若連續失敗兩次,系統會自動抹除推薦參數並暫停優化,以避免對任務造成進一步的干擾。這種機制有助於降低業務波動對執行的風險,同時減少人工干預的成本。

 

  1. Dataleap 一站式的治理解決方案

最後還有產品側的一站式解決方案,用戶可以快速發起治理。系統界面可以看到每個用戶當前可治理的資源量等信息,可以批量或者單個開啟優化,可以選擇激進或普通策略,支持小文件優化,系統會根據業務場景自動適配。在做優化方案的同時,系統就會預估出成本和收益。

 

實踐 & 收益

接下來複盤一個具體的優化案例。

 

  1. 優化實踐:隊列優化前後效果

本例的隊列在優化前的每天 10 點前都處於超髮狀態,導致任務阻塞非常嚴重,很多任務長期處於等待狀態。優化後的資源申請量明顯降低,申請量和使用量之間的 gap 趨向理想範圍,由於減輕了記憶體超發,使 OOM 問題得到改善,讓平臺使用更少的成本和資源做了更多的事情。

 

  1. 收益分析:隊列優化收益指標

由於每個用戶對於底層的理解程度不同,如果按單個任務、單個用戶去優化,很難保障人力成本和時間成本。而通過平臺的自動化解決方案,就可以保證所有業務、隊列都可以達到一個非常好的預期效果。

如上圖所示,該隊列一共有 1900 多個任務,優化完成後,CPU 申請量減少 3.5%、使用量減少 6.2%、利用率提升 46.3%,記憶體申請量減少 30.6%、使用量減少 21.8%、利率提升 24%,所有任務的平均運行時長減少了 1.7 分鐘,每 PB 數據 CPU 節約近百元、記憶體節約百元以上。

 

  1. 收益概覽:業務隊列普通策略優化效果

穩定策略對於記憶體使用率的目標是 75%-80%,已完成優化的 TOP20 隊列普遍提升了 20%,CPU 使用率普遍達到了 70%-80%,整體運行時長也有提升。

另外還有一些激進策略、深度優化和成本優化策略,可以幫助大部分業務在資源利用率和運行效率之間尋求平衡。

 

  1. 收益概覽:增量小文件合併

增量小文件合併是在 reduce 階段,會把產出不合理的文件進一步合併,這個操作導致線上 2000 多個任務的平均運行時間增加了 18%,對當前任務來說是負向收益。但是合併完成後下游任務讀取數據性能比之前提高很多,對整個隊列、集群來說是長期正向收益。後續我們會爭取把小文件合併的性能損耗從 18%降到 10%以內。

 

結論 & 展望

 

  1. 自動化方案優勢 & 局限性

 

自動化方案的優勢包括:

  • 效率提升:通過運用先進的演算法和實時監控機制,自動化方案能夠迅速鎖定最優參數組合,從而提升調優效率。

  • 準確性增強:能夠妥善處理參數間複雜的相互影響,為複雜系統呈現更為精準的調優結果,進一步提高調優的準確性。

  • 人力成本節省:自動化方案減少了人力的投入,有助於降低企業及組織的運營成本。

  • 實時監控與自適應調整:實時監控系統的狀態和性能,根據數據的變化自動做出調整,確保系統始終運行在最佳狀態。

 

然而,自動化方案也存在一些局限性:

  • 演算法依賴:方案的效果高度依賴於所選用的演算法,選取合適的演算法和優化策略成為關鍵。

  • 可解釋性與可控性的局限:自動化方案可能會在可解釋性和可控性方面顯示出一些限制,增加了在特定情況下對系統理解和調整的難度。

  • 特定場景的應對困難:在某些特定的場景下,自動化方案無法完全取代人工調優,仍需專業人員的參與和經驗。

 

  1. 未來發展與挑戰

 

最後來看一下未來的發展規劃和可能面對的挑戰。

發展重點:

  1. 元數據閉環多產品化:

分級保障:實現 Pontus 和 Dorado 之間的元數據通信,針對服務等級協議(SLA)和核心鏈路節點,確保高優先順序的穩定性和及時性。

隊列管理:明確在 Megatron 側為各業務配置的資源使用規則:

回溯管理:設定指定時段內回溯任務所能使用的資源上限。

用戶資源管理:通過設定單個用戶可使用的資源比例上限,以控制該用戶名下任務的可用計算力。

Ad-hoc 資源控制:在系統高負載時段,自動調整 adhoc 查詢的資源使用管控。

  1. 用戶干預參數推薦:

提供固定值、最大/最小閾值、參數屏蔽等選項,允許用戶根據實際需求調整參數。

  1. 結合規則引擎與演算法優化:

通過集成規則引擎和演算法優化,實現更為高效且準確的參數調優。

 

預見挑戰:

  1. 適應變化的數據環境:

面對大數據領域的快速進展,持續優化自動化解決方案以適應不斷變化的數據環境。

  1. 提升演算法性能:

為實現更高效的自動化解決方案,持續研究和提升演算法性能。

  1. 保障系統的可解釋性和可控性:

在推進自動化的過程中,確保系統的可解釋性和可控性,以便用戶能夠理解併進行調整。

 

點擊跳轉DataLeap瞭解更多


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 思路 我發現 .NET Core WebAPi項目有一個與Springboot的不同之處,就是Springboot項目有自動裝配機制,他可以將在src下麵與啟動類在同一級包目錄下的類進行掃描註冊 而之前我瞭解到Springboot的自動裝配機制本質上也就是通過掃描對應包,然後進行通過它自身進行服務註 ...
  • Sql Server中Cross Apply關鍵字的使用 前言 在寫一個業務的時候,有1列數據如下: 車牌號 湘A00001/湘G00001 湘A00002/湘G00002 湘A00003/湘G00003/湘A8888888 湘A00004/湘G00004/湘A00001 我的查詢條件也是車牌號,我 ...
  • 壓縮和解壓指令 gzip/gunzip 指令 gzip:用於壓縮文件 gunzip:用於解壓的 基本語法: gzip 文件,壓縮文件,只能將文件壓縮為 .gz 文件。 gunzip 文件.gz,解壓縮文件命令。 zip/unzip 指令 zip:用於壓縮文件 unzip:用於解壓文件,這個在項目打包 ...
  • 包括套接字相關函數socket、bind、listen、accept、recv、send、connect;以及IO多路復用函數select和epoll的簡介 ...
  • 學習Linux,為了省錢不想買一臺雲伺服器,或者不想裝VMware虛擬機,win11可以通過這種方式安裝Linux(Ubuntu) 一、開啟Windows功能 1.在window11的搜索框內,搜索"Windows功能",出現了“啟用或關閉Windows功能”,點擊打開。 2.勾選"適用於Linux ...
  • 閱讀 h2 資料庫的源碼是一項複雜的任務,需要對資料庫原理、Java 語言和操作系統有深入的理解。可以從以下幾方面入手來完成。 ...
  • 雙寫 加密欄位和明文分別存到兩個欄位中 , 查詢只對明文進行操作 . (備註: 這種只是應對檢查或者設計的方式 , 對於程式沒有實際意義) 使用函數 利用mysql已有加解密的函數 , 在排序和模糊搜索之前解密數據 , 再進行排序或者模糊搜索 . (備註: 查詢速度受到很大影響 , 不能使用索引 ) ...
  • 當使用Spring Boot開發資料庫應用時,讀寫分離是一種常見的優化策略。讀寫分離將讀操作和寫操作分別分配給不同的資料庫實例,以提高系統的吞吐量和性能。 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 微服務架構已經成為搭建高效、可擴展系統的關鍵技術之一,然而,現有許多微服務框架往往過於複雜,使得我們普通開發者難以快速上手並體驗到微服務帶了的便利。為瞭解決這一問題,於是作者精心打造了一款最接地氣的 .NET 微服務框架,幫助我們輕鬆構建和管理微服務應用。 本框架不僅支持 Consul 服務註 ...
  • 先看一下效果吧: 如果不會寫動畫或者懶得寫動畫,就直接交給Blend來做吧; 其實Blend操作起來很簡單,有點類似於在操作PS,我們只需要設置關鍵幀,滑鼠點來點去就可以了,Blend會自動幫我們生成我們想要的動畫效果. 第一步:要創建一個空的WPF項目 第二步:右鍵我們的項目,在最下方有一個,在B ...
  • Prism:框架介紹與安裝 什麼是Prism? Prism是一個用於在 WPF、Xamarin Form、Uno 平臺和 WinUI 中構建鬆散耦合、可維護和可測試的 XAML 應用程式框架 Github https://github.com/PrismLibrary/Prism NuGet htt ...
  • 在WPF中,屏幕上的所有內容,都是通過畫筆(Brush)畫上去的。如按鈕的背景色,邊框,文本框的前景和形狀填充。藉助畫筆,可以繪製頁面上的所有UI對象。不同畫筆具有不同類型的輸出( 如:某些畫筆使用純色繪製區域,其他畫筆使用漸變、圖案、圖像或繪圖)。 ...
  • 前言 嗨,大家好!推薦一個基於 .NET 8 的高併發微服務電商系統,涵蓋了商品、訂單、會員、服務、財務等50多種實用功能。 項目不僅使用了 .NET 8 的最新特性,還集成了AutoFac、DotLiquid、HangFire、Nlog、Jwt、LayUIAdmin、SqlSugar、MySQL、 ...
  • 本文主要介紹攝像頭(相機)如何採集數據,用於類似攝像頭本地顯示軟體,以及流媒體數據傳輸場景如傳屏、視訊會議等。 攝像頭採集有多種方案,如AForge.NET、WPFMediaKit、OpenCvSharp、EmguCv、DirectShow.NET、MediaCaptre(UWP),網上一些文章以及 ...
  • 前言 Seal-Report 是一款.NET 開源報表工具,擁有 1.4K Star。它提供了一個完整的框架,使用 C# 編寫,最新的版本採用的是 .NET 8.0 。 它能夠高效地從各種資料庫或 NoSQL 數據源生成日常報表,並支持執行複雜的報表任務。 其簡單易用的安裝過程和直觀的設計界面,我們 ...
  • 背景需求: 系統需要對接到XXX官方的API,但因此官方對接以及管理都十分嚴格。而本人部門的系統中包含諸多子系統,系統間為了穩定,程式間多數固定Token+特殊驗證進行調用,且後期還要提供給其他兄弟部門系統共同調用。 原則上:每套系統都必須單獨接入到官方,但官方的接入複雜,還要官方指定機構認證的證書 ...
  • 本文介紹下電腦設備關機的情況下如何通過網路喚醒設備,之前電源S狀態 電腦Power電源狀態- 唐宋元明清2188 - 博客園 (cnblogs.com) 有介紹過遠程喚醒設備,後面這倆天瞭解多了點所以單獨加個隨筆 設備關機的情況下,使用網路喚醒的前提條件: 1. 被喚醒設備需要支持這WakeOnL ...
  • 前言 大家好,推薦一個.NET 8.0 為核心,結合前端 Vue 框架,實現了前後端完全分離的設計理念。它不僅提供了強大的基礎功能支持,如許可權管理、代碼生成器等,還通過採用主流技術和最佳實踐,顯著降低了開發難度,加快了項目交付速度。 如果你需要一個高效的開發解決方案,本框架能幫助大家輕鬆應對挑戰,實 ...