揭秘百度數倉融合計算引擎
本文介紹了百度數倉融合計算引擎的整體設計原理、最佳化及實踐,闡述了在網際網路產品快速迭代的趨勢下,基於一層數倉寬表模型的數倉模型如何做到數十秒級查詢的技術方案,並從網際網路業務變化特性、傳統計算引擎存在的問題、融合計算引擎的原理及優缺點、引擎應用場景和效果等角度進行了較為全面的分析,最終透過引擎設計和最佳化實現了提升查詢效能的同時節約數倉儲存的目標,降低了使用者的資料使用成本。
全文4003字,預計閱讀時間11分鐘
01
1.1 資料現狀和資料分析引擎的演進
1.1.1 資料現狀
網際網路企業往往存在多個產品線,每天源源不斷產出大量資料,數倉規模達到數百PB以上,這些資料服務於資料分析師、業務上的產品經理、運營、資料開發人員等各角色。為了滿足這些角色的各種需求,需要穩定高效的計算引擎在海量資料中快速完成分析計算。
1.1.2資料分析引擎的演進及百度數倉引擎選型
單機分析時代(數倉TB級別)->
MapReduce、Hive基於磁碟的分析時代(數倉數PB級別,分析耗時數十分鐘)-> Spark基於記憶體的分析時代(數倉數百PB,分析耗時數十秒)
百度數倉引擎選型:對比了業界常用的Adhoc查詢分析引擎,透過對比Hive生態、大規模Join、儲存引擎、列式儲存、是否支援高併發以及適用場景等,如圖1:
△圖1
最終選型Spark SQL,因為SparkSQL對Hive生態相容好,大規模Join效能好,支援大寬表列存,支援UDF等。
1.2 當前業務特性與趨勢
網際網路產品快速迭代,業務發展越來越快,跨業務分析越來越多,資料驅動業務越來越重要。數倉計算任務和資料量越來越多,adhoc場景日均參與計算的資料數十P,ETL場景日均數十P,資料服務的主要群體正在從資料研發轉向分析師、產品及運營人員,查詢計算速度需要進一步提升,使用門檻需要進一步降低。
02
2.1 在資料驅動業務越來越重要的大趨勢下,分析效率越來越重要
△圖2
△圖3
2.2 思考
那麼在生產實踐中如何解決上述面臨的問題及痛點呢,在對數倉技術深度調研和對業務線具體使用者訪談後,根據調研和訪談結論,得出以下想法:
(1)引擎層面:設計融合計算引擎、使用DataSkipping,Limit下推、Codegen和向量化,引數調優等方式加速資料查詢,快速滿足業務查詢需求,助力資料驅動業務。
(2)數倉層面:數倉不分層,節約數倉整體儲存,用更少的表滿足業務需求,比如一個主題一張寬表,明確資料表使用方式,確保口徑清晰統一,避免業務方線下拉會溝通,降低溝通成本,提高溝通效率。
03
3.1 融合計算引擎
融合計算引擎是一個百度自研的集常駐、查詢、生產於一體的數倉融合的SQL
計算引擎,它基於 Apache Spark 構建,具有快速、可擴充套件和高度可靠的特性,不僅用於在PB甚至EB級大規模資料處理和分析場景中執行 SQL 查詢,也用於例行生產的 ETL 場景。
3.1.1融合計算引擎架構
融合計算引擎架構如下:由WebServer、Master、Worker三部分組成。具體各部分功能見圖4:
△圖4
3.1.2 融合計算引擎效能最佳化
3.1.2.1 如何算的更少DataSkipping
(a)同列同質資料擁有更好的編碼及壓縮
(b)Parquet對映下推,透過對映下推只需要從每個RowGroup中讀取下推的列即可,實現檔案IO量:TB->GB級別,如圖5:
△圖5
(3)RowGroup級別統計過濾
△圖6
△圖7
3.1.2.2 如何算得更快
△圖8
△圖9
△圖10
△圖11
3.1.2.3 如何算的更穩定
3.1.3融合計算引擎例行ETL場景
△圖12
3.2 融合計算引擎優點及效能
(1)查詢引擎和ETL生產引擎統一,避免不同引擎之間的語義差距,使用成本更低
04
(1)融合計算引擎和寬表建模更適合面向快速迭代的資料驅動型業務,能夠極大的提升業務效率。
(2)基於當前的業務實踐,引擎和寬表在儲存和查詢效能方面相比於傳統數倉更優。
(3)在業務效率提升的同時,查詢越來越多,計算量越來越大,引擎壓力有所提升,寬表的建設在資料生產和維護成本有所提升,整體挑戰越來越大,還需結合引擎技術和實際場景進一步最佳化探索。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70024924/viewspace-3007768/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Tech Talk · 雲技術有話聊 | 基於多場景計算分析的融合數倉基礎架構架構
- 詳解數倉的向量化執行引擎
- 騰訊燈塔融合引擎的設計與實踐
- OpenCV計算機視覺學習(2)——影像算術運算 & 掩膜mask操作(數值計算,影像融合,邊界填充)OpenCV計算機視覺
- [數倉]資料倉儲設計方案
- 圖計算引擎分析——Gemini
- 圖計算引擎分析--GridGraph
- 【java規則引擎】一個基於drools規則引擎實現的數學計算例子Java
- 計算莊家的持倉量
- 每月雲事|雲、數、智融合能力成為雲端計算廠商的硬核
- 資料倉儲(6)數倉分層設計
- 資料倉儲(7)數倉規範設計
- 數倉(一)數倉概述
- 數倉模型設計詳解模型
- 華為雲王傳廷 融合普惠的雲數倉——解析華為雲GaussDB(DWS) 3.0
- 數倉 - [04] 數倉分層
- 開發者解讀:為什麼螞蟻要用融合計算這種新計算模式?模式
- MaxCompute執行引擎核心技術DAG揭秘
- 揭秘計算機奇蹟:探索I/O裝置的神秘世界!計算機
- 邊緣計算:推動“人-機-物”跨界融合
- 阿里雲:計算將成DT世界引擎阿里
- 計算機計算小數除法的陷阱計算機
- 百度地圖計算兩座標點之間距離計算地圖
- 計算素數【Java】Java
- Octave 數值計算
- 深度揭秘阿里雲函式計算非同步任務能力阿里函式非同步
- Apache Flink 不止於計算,數倉架構或興起新一輪變革Apache架構
- AI與雲端計算的深度融合會帶來什麼?AI
- 天翼雲探索雲原生、邊緣計算融合新思路
- 整合3PAR服務雲端計算 惠普期待融合薦
- 降價背後,函式計算規格自主選配功能揭秘函式
- 【ODPS新品釋出第2期】實時數倉Hologres:推出計算組例項//向量計算+大模型等新能力大模型
- 雲端計算成為資料倉儲的新重心
- 正向合約&反向合約倉位變化計算
- 強化數字化技術與業務融合打造化工集團公司數字化轉型提速引擎
- 計算機圖形學:虛擬和現實世界的融合計算機
- 中國人壽“稻客雲”開闢雲端計算多雲融合之道
- 計算Linux天數Linux