大資料架構系列:如何理解湖倉一體?
導語 | 本文推選自騰訊雲開發者社群-【技思廣益 · 騰訊技術人原創集】專欄。該專欄是騰訊雲開發者社群為騰訊技術人與廣泛開發者打造的分享交流視窗。欄目邀約騰訊技術人分享原創的技術積澱,與廣泛開發者互啟迪共成長。本文作者是騰訊後臺開發工程師葉強盛。
引 言
這十多 年大數 據技術蓬勃發展,從市場的表現來看基於大資料的資料儲存和計算是非常有價值的,其中以雲資料倉庫為主打業務的公司Snowflake市值最高(截止當前449億美元),另一家以湖倉一體為方向公司Databricks估值或達380億美元; 各大伺機而動的雲廠商也紛紛推出自己的資料湖、雲資料倉庫、湖倉一體產品。
大資料領域概念(術語)還是非常多的,大多數時候都是先射箭再畫靶,先有的需求大家搞了一段時間,然後由一些權威人士提出一些概念(術語)用於描述,所以不能嚴格用數學的定義方式去框定這些概念(術語)的邊界;且很多時候一個術語“形象”比“準確”更易傳播,形象意味著易懂,準確意味著資訊量巨大(參考數學定義)。建議可以從需求的角度去切入理解這些大資料概念和技術,不要過於追求準確的定義。
無論是資料湖還是資料倉庫最後還是面向於解決使用者的問題,使用者要的其實是資料裡的資訊,依賴於湖和倉的資料攝取、儲存、計算能力主要是因為海量多元的資料,如果使用者資料小業務簡單完全可以用本地Excel匯入資料進行各種有效分析。以下討論資料湖、資料倉庫、湖倉一體都是基於使用者的資料是海量且複雜多元的。
(以上圖片來自阿里雲)
Why: 業 界為 什麼要做湖倉一體?
我來形象地描 述 一下: 集合兩者的優勢,像資料倉庫一樣管理的資料湖,像資料湖一樣開放的資料倉庫。
從W hat描述中資料湖和資料倉庫的描述可以看出,業內常用的大資料架構基本上就是湖倉一體,即拓寬的資料倉庫的功能,也會主動的規範資料的儲存和使用。 業內目前分享出來的資訊來看,主要還是為了替換掉老的Lambda和Kappa架構,想通過一個相對簡單的架構進行降本提效。
(以上圖片來自阿里雲)
How:業界怎麼做湖倉一體?
目前業內的湖倉一體的架構一般都叫基於某某資料倉庫的湖倉一體架構,使用者會把熱資料(頻繁查詢)放在資料倉庫中,無論在儲存和計算上都有大量的優化,計算速度快、成本高;冷資料放在資料湖中,計算慢、成本低,當用戶要查詢時,直接通過資料倉庫的計算層來遠端訪問資料湖格式的資料,許多架構中還會來臨時擴容彈性計算節點來計算冷資料,避免熱資料的高效查詢受影響。
湖倉一體冷熱儲存架構
如 上圖,近N天的熱資料在常駐MP P計算層進行查詢,資料變冷後轉成資料湖儲存格式入湖,後續由彈性MPP計算層對資料進行計算,一般冷資料次數頻率較低。
如上圖,所有資料非同步入湖,資料倉庫的元資料會更新,使用者查詢時會快取需要掃描的原始資料,通過快取淘汰機制清理計算頻率較低的資料。
真實業務場景可能是同一套架構裡面會支援上述兩種實現。也有一些湖倉一體的架構中沒有資料倉庫產品,僅用了Presto作為查詢加速(火山引擎、Bilibili),不過整體架構大致也差不多。
以下列舉了業界實現的方案:
阿里雲 MaxCompute+Hologres
阿里雲 EMR+Sarrocks
華為雲 湖倉一體
位元組跳動 基於Doris的湖倉一體探索
位元組跳動-火山引擎 湖倉一體雲服務
bilibili 湖倉一體架構
Google BigLake
Amazon Lake House
Azure Lake House
SnowFlake Data Lake
總結
當前湖倉一體主要面向於解決使用者資料量特別大且多元化的場景,倉的作用在於提速,湖的作用在支援海量的資料併發寫入和海量儲存;且設計者希望儘量降低架構的複雜度,提高效率。
以下個人評估,僅供參考:
-
SnowFlake在分析型資料場景下基本上就是天生的湖倉一體,優勢巨大。
-
Doris/Starrocks的架構也會往Snowflake方向改進,潛力滿滿。
-
基於Spark/Presto的湖倉一體,查詢的效率會低於上述兩種,但是可以作為補足上述的部分場景。
參考資料:
1 . 多 角 度解析 : 資料湖 VS 資料倉庫的根本區別
2. 深度對比Delta、Iceberg和Hudi三大開源資料湖方案
3.2萬字詳解資料湖:概念、特徵、架構與案例
4.詳解資料湖,概念、特徵、架構、方案、場景以及建湖全過程
5.4萬字全面掌握資料庫、資料倉庫、資料集市、資料湖、資料中臺
6.大資料發展20年,“倉湖一體”是終局?
7.B站基於Iceberg的湖倉一體架構實踐
8.亞馬遜湖倉一體
9.構建切實有效的湖倉一體架構
作者簡介
葉強盛
騰訊雲開發者社群【技思廣益·騰訊技術人原創集】作者
騰訊後臺開發工程師,目前負責騰訊天穹大資料OLAP引擎相關研發工作,有著豐富的大資料框架研發經驗。
推薦閱讀
如何基於標準化的OpenTelemetry構建APM探針能力
:point_down: 點 擊 「閱讀原文」 , 註冊成為社 區創作者,認識大咖,打造你的技術影響力!
- 7天DAU超億級,《羊了個羊》技術架構升級實戰
- 國民級應用:微信是如何防止崩潰的?
- 由淺入深讀透vue原始碼:diff演算法
- 3小時!開發ChatGPT微信小程式
- 祖傳程式碼重構:從25萬行到5萬行的血淚史
- H5開屏從龜速到閃電,企微是如何做到的
- AI繪畫火了!一文看懂背後技術原理
- 快收藏!超強圖解Docker常見命令與實戰!
- Cloud Studio高階玩家:強大的YAML模板
- C 20協程學習
- 打造更安全的影片加密,雲點播版權保護實踐
- 深入淺出帶你走進Redis!
- 【技思廣益 · 騰訊技術人原創集】雙週優秀作品回顧vol.03
- 一站式DevOps真的能提速增效嗎?TVP吐槽大會邀您來驗證!
- 帶你視覺化理解go記憶體
- 輕鬆上手!手把手帶你掌握從Context到go設計理念
- 深入淺出帶你走進Redis!
- 揭祕KVM年度核心技術突破的背後原理!
- 一種海量資料安全分類分級架構的實現!
- 玩轉騰訊雲!手把手教你用RunInstances介面建立CVM時給公網IP和彈性網絡卡打標籤