![]()
2023年,Uber工程師在內(nèi)部文檔里寫(xiě)下一行備注:"批處理正在殺死我們的實(shí)驗(yàn)速度。"三年后,這行備注變成了IngestionNext——一個(gè)讓數(shù)據(jù)從"小時(shí)級(jí)"跌進(jìn)"分鐘級(jí)"的流式架構(gòu)。 latency(延遲)和計(jì)算成本雙雙下降25%,但真正的故事藏在"為什么是現(xiàn)在"這個(gè)時(shí)間差里。
從"隔夜菜"到"現(xiàn)炒現(xiàn)賣(mài)":數(shù)據(jù)新鮮度成了質(zhì)量指標(biāo)
Kai Waehner,Confluent的全球Field CTO,在LinkedIn上點(diǎn)破了這層窗戶(hù)紙:「This move is all about treating data freshness as a key dimension of data quality.」(這次轉(zhuǎn)向的核心,是把數(shù)據(jù)新鮮度當(dāng)作數(shù)據(jù)質(zhì)量的關(guān)鍵維度。)
這句話的潛臺(tái)詞很扎心——過(guò)去Uber的數(shù)據(jù)湖,本質(zhì)上是個(gè)"隔夜菜"生意。Apache Spark批處理管道按小時(shí)或天調(diào)度,數(shù)據(jù)從產(chǎn)生到可用,中間隔著一段尷尬的真空期。機(jī)器學(xué)習(xí)團(tuán)隊(duì)想跑個(gè)實(shí)驗(yàn)?等明天。分析師要看實(shí)時(shí)趨勢(shì)?先睡一晚。
流式架構(gòu)的悖論在于:它解決的不是"能不能處理",而是"什么時(shí)候能開(kāi)始處理"。
IngestionNext的解法是把Kafka(消息隊(duì)列)和Flink(流處理引擎)焊進(jìn)數(shù)據(jù)湖的入口。事件流不再被攢成批量文件,而是連續(xù)流過(guò)Flink作業(yè),直接寫(xiě)入Hudi表。Hudi的增量處理、事務(wù)提交、時(shí)間旅行功能,讓"流進(jìn)來(lái)"的數(shù)據(jù)同時(shí)滿足"湖存儲(chǔ)"的可靠性要求。
一個(gè)細(xì)節(jié):Hudi的transactional commits(事務(wù)提交)和rollbacks(回滾)能力,在這里不是錦上添花,而是剛需。流式寫(xiě)入意味著數(shù)據(jù)持續(xù)落地,沒(méi)有明確的"批次邊界"來(lái)兜底。如果中途出錯(cuò),必須能精準(zhǔn)回滾到某個(gè)時(shí)間點(diǎn),否則下游分析就會(huì)吃到臟數(shù)據(jù)。
25%的數(shù)字背后:省的是錢(qián),賭的是架構(gòu)債
![]()
latency降25%、計(jì)算成本降25%,這兩個(gè)數(shù)字放在一起讀才有意思。
批處理的隱藏成本在于"過(guò)度預(yù)留"。Spark作業(yè)為了應(yīng)對(duì)峰值,通常按最大負(fù)載配置資源,但數(shù)據(jù)流量是波動(dòng)的——凌晨三點(diǎn)和下午三點(diǎn)的寫(xiě)入量可能差一個(gè)數(shù)量級(jí)。流式架構(gòu)的彈性伸縮更細(xì)粒度,F(xiàn)link可以根據(jù)Kafka的實(shí)時(shí)吞吐量動(dòng)態(tài)調(diào)整并行度,資源利用率自然上去。
但Uber沒(méi)說(shuō)的是:這25%的節(jié)省,是用三年的架構(gòu)重寫(xiě)換來(lái)的。
2021-2023年間,Uber的數(shù)據(jù)平臺(tái)團(tuán)隊(duì)至少?lài)L試過(guò)兩次流式化改造,都卡在同一個(gè)坎上——schema evolution(模式演進(jìn))。數(shù)據(jù)湖里的表結(jié)構(gòu)會(huì)隨業(yè)務(wù)變化,批處理時(shí)代,schema變更可以跟著版本化快照走;流式寫(xiě)入時(shí),新舊schema的兼容、歷史數(shù)據(jù)的 retroactive(追溯性)處理,能把工程師逼瘋。Hudi的time travel功能在這里成了救命稻草,它允許下游查詢(xún)指定時(shí)間點(diǎn)的表狀態(tài),schema變更被封裝在元數(shù)據(jù)層,不污染物理存儲(chǔ)。
換句話說(shuō),Uber賭的不是Flink比Spark快,而是Hudi的元數(shù)據(jù)管理能力能扛住生產(chǎn)環(huán)境的schema chaos。
為什么"分鐘級(jí)"在今天才變得不可替代
一個(gè)反直覺(jué)的事實(shí):大多數(shù)公司的數(shù)據(jù)湖,延遲從"小時(shí)"降到"分鐘"帶來(lái)的業(yè)務(wù)收益,遠(yuǎn)小于技術(shù)團(tuán)隊(duì)為此付出的重構(gòu)成本。Uber這次押注,說(shuō)明它的業(yè)務(wù)形態(tài)已經(jīng)跨過(guò)了某個(gè)臨界點(diǎn)。
看兩個(gè)場(chǎng)景。一是動(dòng)態(tài)定價(jià),Uber的核心算法依賴(lài)實(shí)時(shí)供需信號(hào),但傳統(tǒng)架構(gòu)里,這些信號(hào)從產(chǎn)生到進(jìn)入模型,延遲可能覆蓋整個(gè)高峰時(shí)段。二是欺詐檢測(cè),批處理模式下,可疑交易要等到下一批才能被標(biāo)記,錢(qián)已經(jīng)轉(zhuǎn)出去了。
![]()
這兩個(gè)場(chǎng)景的共同點(diǎn):決策窗口在收縮。2019年,"幾小時(shí)內(nèi)響應(yīng)"是可接受的;2024年,"幾分鐘內(nèi)響應(yīng)"是底線。不是技術(shù)變了,是業(yè)務(wù)對(duì)"實(shí)時(shí)"的定義變了。
IngestionNext的命名也很有意思——"Next"暗示這不是終點(diǎn)。Uber在官方博客里沒(méi)有透露的是,F(xiàn)link作業(yè)目前只覆蓋了部分關(guān)鍵業(yè)務(wù)線,完整的流式化遷移預(yù)計(jì)要到2027年。25%的 latency降幅,是"混合架構(gòu)"階段的成績(jī)單:批處理管道還在跑,只是流量被逐步切走。
流式數(shù)據(jù)湖的暗戰(zhàn):Hudi、Iceberg、Delta Lake的三選一
Uber的選擇不是技術(shù)中立的結(jié)果。2017年,Uber開(kāi)源了Hudi,初衷是解決自己的數(shù)據(jù)湖更新難題。七年后,Hudi成了IngestionNext的底座,這層綁定關(guān)系比任何benchmark都更有說(shuō)服力。
但市場(chǎng)格局在2024年已經(jīng)分化。Netflix押注Iceberg,Databricks力推Delta Lake,三家在upsert(更新插入)性能、元數(shù)據(jù)規(guī)模、生態(tài)集成上各有勝負(fù)。Uber的堅(jiān)持,某種程度上是"自己的刀削自己的把"——Hudi的time travel和增量查詢(xún)能力,確實(shí)匹配流式攝入的場(chǎng)景,但這也意味著Uber要持續(xù)投入Hudi的社區(qū)維護(hù),而不是搭I(lǐng)ceberg的快車(chē)。
一個(gè)值得玩味的對(duì)比:Databricks在2023年把Delta Lake的流式處理能力強(qiáng)化到"分鐘級(jí)延遲",但商業(yè)化版本和開(kāi)源版本的功能差距在拉大。Uber選擇Hudi,也有規(guī)避vendor lock-in(廠商鎖定)的考量——畢竟,Confluent的Kafka和Ververica的Flink都是外部依賴(lài),數(shù)據(jù)湖底座至少得握在自己手里。
數(shù)據(jù)基礎(chǔ)設(shè)施的選型,從來(lái)不只是技術(shù)問(wèn)題,更是組織能力的映射。
Uber的工程師在博客結(jié)尾留了一句:「We are continuing to optimize the platform for higher throughput and lower latency.」(我們?cè)诔掷m(xù)優(yōu)化平臺(tái),追求更高吞吐、更低延遲。)
沒(méi)有時(shí)間表,沒(méi)有具體指標(biāo)。這種模糊的收尾,反而暴露了流式數(shù)據(jù)湖的真實(shí)狀態(tài)——架構(gòu)重寫(xiě)完成只是開(kāi)始,生產(chǎn)環(huán)境的corner case(邊界情況)、Flink作業(yè)的背壓調(diào)優(yōu)、Hudi表的compaction(壓縮)策略,每一項(xiàng)都能吃掉一個(gè)季度的人天。25%的降幅是階段性的,但"數(shù)據(jù)新鮮度=數(shù)據(jù)質(zhì)量"這個(gè)等式,一旦寫(xiě)進(jìn)工程文化,就再也回不去了。
你的數(shù)據(jù)湖還在用批處理嗎?延遲的每一分每一秒,都在悄悄定義你的業(yè)務(wù)能跑多快。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.