摘要:本文整理自 Apache Paimon PMC Chair 李勁松(之信)老師在5月16日 Streaming Lakehouse Meetup · Online 上的分享嚎杨,主要分享 Apache Paimon 相關(guān)的演進(jìn)胸竞、目標(biāo)及應(yīng)用。內(nèi)容主要分為以下四個(gè)部分:
- 從孵化到畢業(yè)午笛,Paimon 的發(fā)展與場(chǎng)景
- 統(tǒng)一存儲(chǔ)底座李丰,Paimon 與流苦锨、批、OLAP
- 完整生態(tài)集成趴泌,Paimon 的計(jì)算引擎推薦
- 阿里巴巴實(shí)踐舟舒,Paimon 數(shù)據(jù)湖戰(zhàn)役
一、 從孵化到畢業(yè)嗜憔,Paimon 的發(fā)展與場(chǎng)景
Paimon 最初在Flink社區(qū)中以 Flink Table Store 的名稱出現(xiàn)魏蔗,開始在 Flink 社區(qū)內(nèi)孵化。直到 2023 年痹筛,Paimon 發(fā)展成為一個(gè)公共的莺治、與具體引擎無(wú)關(guān)的湖式(Lakehouse)架構(gòu),從 Flink 社區(qū)獨(dú)立出來(lái)帚稠,轉(zhuǎn)變成一個(gè) Apache 項(xiàng)目谣旁。到了 2024 年 4 月,Paimon 正式完成了在 Apache 的孵化過(guò)程滋早,成為了一個(gè)頂級(jí)項(xiàng)目榄审。
1. 數(shù)據(jù)架構(gòu)的演進(jìn):流批一體的 Lakehouse
在為什么要做 Paimon 之前,必然會(huì)談及數(shù)據(jù)架構(gòu)的演進(jìn),即為什么最后會(huì)做出實(shí)時(shí)數(shù)據(jù)庫(kù) Apache Paimon杆麸。
業(yè)界最開始的架構(gòu)基本上是 Warehouse 架構(gòu)搁进,比如傳統(tǒng)的 Hive 數(shù)倉(cāng),是一個(gè)天級(jí)的ETL分析昔头,不管是 LOG 還是 CDC 數(shù)據(jù)都是通過(guò) Batch 的方式流入數(shù)倉(cāng)饼问,ETL 再進(jìn)行加工,最終導(dǎo)入業(yè)務(wù)庫(kù)揭斧。以上方式的好處是流程非常簡(jiǎn)單莱革,壞處是其數(shù)據(jù)時(shí)效性永遠(yuǎn)是 T+1 的。
此時(shí)讹开,F(xiàn)link 出現(xiàn)了盅视,F(xiàn)link 主打流式計(jì)算,能將傳統(tǒng)離線數(shù)倉(cāng)的時(shí)效性從 T+1(天級(jí)/小時(shí)級(jí))加速至秒級(jí)旦万。所有的數(shù)據(jù)通過(guò)秒級(jí)流動(dòng)的方式流入數(shù)倉(cāng)闹击,稱為實(shí)時(shí)數(shù)倉(cāng)(Streaming Warehouse) ,數(shù)據(jù)最終落入最底層的 ADS成艘、OLAP 等系統(tǒng)提供秒級(jí)的查詢赏半。整條鏈路非常實(shí)時(shí)梅忌,這是近年總體的發(fā)展方向,但成本很大除破,開發(fā)復(fù)雜度較高。所以可以遷移部分價(jià)值較高的業(yè)務(wù)至實(shí)時(shí)流式數(shù)倉(cāng)琼腔,但是往往遷移不了全部業(yè)務(wù)瑰枫,故上述兩種方式在業(yè)界并存。
不僅是實(shí)時(shí)數(shù)倉(cāng)丹莲,離線數(shù)倉(cāng)也在往更好的方向發(fā)展光坝,出現(xiàn)了 Lake house,它不只是一個(gè)純離線架構(gòu)甥材,還能帶來(lái)一定的Streaming 處理盯另。它在原來(lái)離線數(shù)倉(cāng)上做更好的操作,因?yàn)榈紫碌?Data Lake Format 有更細(xì)粒度的保證洲赵。在此基礎(chǔ)上鸳惯,天級(jí)的刷新帶來(lái)了更好的時(shí)效性保障。但此時(shí)叠萍,Warehouse芝发、Lakehouse、Streaming Warehouse 還是比較割裂的狀態(tài)苛谷,中間仍缺乏讓兩種技術(shù)融合在一起的部分辅鲸。
Paimon 的出發(fā)點(diǎn)是想通過(guò)底層格式的提升來(lái)實(shí)現(xiàn) Streaming Warehouse 的分鐘級(jí)數(shù)據(jù)更新,以此促進(jìn) Lakehouse 的數(shù)據(jù)全鏈路流動(dòng)腹殿。Paimon 把整套架構(gòu)連在一起独悴,數(shù)據(jù)以離線的方式或更低成本的方式來(lái) Work,當(dāng)離線的方式不夠锣尉,需要更高的時(shí)效性時(shí)刻炒,就可以用 Streaming 的方式使之流動(dòng)。這離不開兩個(gè)技術(shù)自沧,一個(gè)是 Flink落蝙,目前主流的流計(jì)算引擎,另一個(gè)是更好能力的格式支撐暂幼。
2. Paimon前身FTS誕生的特點(diǎn)與優(yōu)勢(shì)
為什么做 Paimon 這樣全新的湖格式筏勒,有以下三點(diǎn)緣由(優(yōu)勢(shì))。
(1)實(shí)時(shí)數(shù)據(jù)湖旺嬉,以低成本的方式支持湖上更新管行,且在此基礎(chǔ)上還有開放的格式、數(shù)據(jù)邪媳、計(jì)算捐顷。
(2)流式數(shù)據(jù)湖荡陷,深度集成 Flink 流式計(jì)算,完整的流讀流寫與融合狀態(tài)計(jì)算的方式迅涮。
(3)國(guó)人主導(dǎo)的社區(qū)废赞,目前可看到來(lái)自阿里、字節(jié)等國(guó)內(nèi)各種公司叮姑,Paimon 社區(qū)/ Flink Table Store 的存在確保了針對(duì)國(guó)內(nèi)企業(yè)問(wèn)題解決時(shí)的溝通更為直接唉地,響應(yīng)更加迅速。
我們認(rèn)為以上三點(diǎn)是別的技術(shù)無(wú)法取代或根本解決的传透,所以研發(fā)了 Flink Table Store耘沼。
3. Paimon社區(qū)的發(fā)展
從 Flink Table Store 到 Paimon 孵化再到成功畢業(yè)這兩年來(lái),Paimon 社區(qū)的發(fā)展非常迅速朱盐。從 2022 年到 2024 年群嗤, Contributors、Commits兵琳、Stars 都有巨大提升狂秘,這離不開國(guó)內(nèi)各大公司的支持。
4. Paimon 的核心場(chǎng)景
目前 Paimon 的核心場(chǎng)景主要有以下三點(diǎn)躯肌。
(1)CDC 入湖
Paimon 對(duì)此做了相當(dāng)多的優(yōu)化赃绊,來(lái)保證更簡(jiǎn)化的架構(gòu)、更好的性能與實(shí)時(shí)性羡榴。具體有:一鍵整庫(kù)入湖碧查,大幅簡(jiǎn)化架構(gòu);也可達(dá)到實(shí)時(shí)更新校仑、極速查詢的場(chǎng)景忠售,且在此基礎(chǔ)上成本不高;可以靈活更新迄沫,定義部分列更新稻扬、多種聚合更新。
(2)構(gòu)建流式鏈路
即可以用 Paimon 來(lái)構(gòu)建完整的 Streaming 鏈路羊瘩,有以下幾個(gè)支撐的場(chǎng)景:第一泰佳,可生成變更日志,在流讀時(shí)就能拿到已更新好的全行的 Record 數(shù)據(jù)尘吗,這非常有利于 Streaming 鏈路的構(gòu)建逝她;第二,Paimon 也朝著變成真正的隊(duì)列的方式向前發(fā)展睬捶,有消費(fèi)者機(jī)制黔宛,在最新版本當(dāng)中,有變更日志單獨(dú)生命周期管理擒贸,可像 Kafka 一樣定義更長(zhǎng)的變更日志的生命周期臀晃,比如 Kafka 保存一天以上或者三天觉渴;在此基礎(chǔ)上,構(gòu)成了輕狀態(tài)低成本的流式鏈路徽惋。
(3)極速 OLAP 查詢
前二者使整條鏈路流起來(lái)了案淋,但流起來(lái)之后,數(shù)據(jù)需要沉淀险绘,所以 Paimon 也做了很多東西踢京,使在這條鏈路沉淀下來(lái)的數(shù)據(jù)中能達(dá)到極速的OLAP查詢。第三點(diǎn)就是實(shí)現(xiàn) Z-Order + 索引結(jié)合計(jì)算極速分析隆圆;分析引擎在 Paimon 上蓬勃發(fā)展,形成平權(quán)發(fā)展的引擎生態(tài)翔烁,包括 Flink, Spark, StarRocks, Trino 都能很好的查詢渺氧。
二、統(tǒng)一存儲(chǔ)底座蹬屹,Paimon 與流侣背、批、OLAP
接下來(lái)簡(jiǎn)單分析一下慨默,Paimon如何做統(tǒng)一存儲(chǔ)底座贩耐,如何賦能流、批厦取,OLAP更好的查詢潮太。
1. 流、批虾攻、OLAP 一體化架構(gòu)
首先看 Streaming Lakehouse 架構(gòu)铡买,數(shù)據(jù)可以被 Streaming Ingestion 流入數(shù)據(jù)湖中。Paimon 可以架設(shè)在 OSS霎箍、HDFS 等系統(tǒng)上奇钞,然后在此之上把數(shù)據(jù)沉淀下來(lái),通過(guò) Flink 或 Spark 以Batch 的計(jì)算方式降低成本漂坏。也可以為了時(shí)效性景埃,用 Streaming 的方式,如 Flink Streaming SQL 使整條鏈路流動(dòng)起來(lái)顶别。數(shù)據(jù)沉淀需要分析谷徙,為了進(jìn)行深入分析和獲取洞察,我們常常需要借助 OLAP驯绎。Trino 和 StarRocks 等技術(shù)都是進(jìn)行 OLAP 分析的優(yōu)秀選擇蒂胞。Paimon 社區(qū)希望能將這三者都做到極致,或業(yè)界領(lǐng)先的水準(zhǔn)条篷,所以這套架構(gòu)能支撐完整的三種計(jì)算骗随,也能支撐各種各樣能力豐富的計(jì)算引擎蛤织。
2. Paimon 的統(tǒng)一存儲(chǔ)發(fā)展
下圖羅列了 Paimon 做了一些支撐。
(1)流
第一鸿染,作為統(tǒng)一存儲(chǔ)發(fā)展指蚜,在流方向與 Flink 深度集成,共同往前發(fā)展涨椒;第二摊鸡,F(xiàn)link 與 Paimon 兩個(gè)社區(qū)攜手共進(jìn),整體繼續(xù)提升更新能力蚕冬,更新是流的基礎(chǔ)免猾;第三,Paimon 擴(kuò)大流寫流讀的場(chǎng)景囤热,分鐘級(jí)覆蓋所有 Streaming 場(chǎng)景猎提。
(2)批
主要分為兩個(gè)方向,一個(gè)方向是繼續(xù)和 Flink 往前旁蔼,打造流批一體架構(gòu)锨苏,流批一體計(jì)算 + 流批一體存儲(chǔ);第二棺聊,目前業(yè)界常用的批處理引擎是 Spark伞租,所以 Paimon 深度集成 Spark,打造了業(yè)界領(lǐng)先的批讀批寫性能限佩,預(yù)計(jì)在不久的將來(lái)葵诈,阿里云也會(huì)使用 Spark 與 Paimon 來(lái)進(jìn)行 TPC-DS 的標(biāo)準(zhǔn)測(cè)試。
(3)OLAP
第一祟同,Paimon 深度集成 OLAP 引擎:StarRocks驯击、Trino 等;第二耐亏,推出 Deletion Vectors 模式徊都,能在湖存儲(chǔ)上達(dá)到近實(shí)時(shí)更新,極速查詢广辰;第三暇矫,文件上加強(qiáng) Z-Order 及豐富的索引,加速查詢择吊。
綜上李根,在流、批几睛、OLAP 中房轿,Paimon 作為一個(gè)存儲(chǔ)格式,低成本、分鐘級(jí)覆蓋主流大數(shù)據(jù)需求囱持。
三夯接、 完整生態(tài)集成,Paimon 的計(jì)算引擎推薦
接下來(lái)分享完整生態(tài)集成以及 Paimon 的優(yōu)勢(shì)纷妆。
主要分為三個(gè)領(lǐng)域:流寫流讀盔几、批寫、批讀/OLAP掩幢。在這三個(gè)方面逊拍,擁有全部能力的是 Flink,這并不意味著 Flink 所有的東西都非常好际邻,它最好的地方在流寫流讀芯丧;批寫批讀的能力除了 Flink 就是 Spark,它是推薦的批引擎世曾,也有部分流寫流讀能力缨恒,但弱于 Flink;查詢側(cè)則集成了較為豐富的生態(tài)度硝,目前市面上主流的引擎都能查詢 Paimon肿轨,目前有較強(qiáng) OLAP 能力的是 StarRocks寿冕,當(dāng)然 Trino蕊程、Doris 也提升了很多。
四驼唱、阿里巴巴實(shí)踐藻茂,Paimon 數(shù)據(jù)湖戰(zhàn)役
接下來(lái)簡(jiǎn)單介紹一下阿里巴巴實(shí)踐,Paimon 數(shù)據(jù)湖戰(zhàn)役玫恳,以及究竟哪些業(yè)務(wù)能用于數(shù)據(jù)湖辨赐。
1. 阿里巴巴業(yè)務(wù)應(yīng)用場(chǎng)景
下圖是阿里內(nèi)部業(yè)務(wù)的大致應(yīng)用場(chǎng)景:Flink 流作業(yè)有 3 萬(wàn)+ Cu(不包括 Contributors、Stars 等計(jì)算)京办、300+ 作業(yè)掀序、20+ 業(yè)務(wù)方,整體作業(yè)并不多惭婿,這和阿里降本增效有關(guān)不恭,一個(gè)作業(yè)其實(shí)可能是十張甚至幾十張表的計(jì)算,可以很好降低成本财饥。
(1)業(yè)務(wù)
通過(guò)流式湖倉(cāng)提升原有純離線數(shù)據(jù)的時(shí)效性换吧,但整體不會(huì)帶來(lái)太大的成本增加;還有其他業(yè)務(wù)钥星,如 CDC 入湖降低成本沾瓦;經(jīng)過(guò) Z-Order 或索引構(gòu)建,結(jié)合 StarRocks 這類 OLAP 引擎,能極大提升查詢性能贯莺。
(2)進(jìn)展
目前還仍處于初步階段风喇,后面最重要是繼續(xù)整合內(nèi)部計(jì)算系統(tǒng)和權(quán)限系統(tǒng)形成完整的數(shù)倉(cāng)體驗(yàn)。
(3)收益
大幅降低實(shí)時(shí)化成本乖篷,達(dá)到流批一體化開發(fā)體驗(yàn)响驴,也能解鎖開放式的計(jì)算能力,能對(duì)接所有主流的計(jì)算引擎撕蔼。
2. 統(tǒng)一湖存儲(chǔ):打通阿里云所有計(jì)算引擎
在統(tǒng)一湖存儲(chǔ)上豁鲤,怎么打通阿里云內(nèi)部主流的計(jì)算引擎:Serverless Flink、Serverless Spark鲸沮、MaxCompute琳骡、Hologres、Serverless StarRocks讼溺,有以下三點(diǎn)楣号。
所有計(jì)算引擎打通 Paimon 達(dá)成 State-Of-Art 的性能,使所有的計(jì)算引擎/OLAP查詢性能達(dá)到業(yè)界領(lǐng)先的計(jì)算性能怒坯。
結(jié)合 Flink 構(gòu)建流批一體的 Streaming Lakehouse炫狱。可以在一套架構(gòu)中剔猿,有 Paimon 統(tǒng)一湖格式的存儲(chǔ)视译,靈活按照自己的業(yè)務(wù)選擇不同的計(jì)算引擎來(lái)賦能,這也是這幾年來(lái)業(yè)界的趨勢(shì)归敬。
目前還沒(méi)有一套計(jì)算引擎能滿足所有需求酷含,在計(jì)算上的能力非常多。不管哪個(gè)計(jì)算引擎需要補(bǔ)全所有的其他的能力汪茧,都非常難椅亚。所以 Paimon 在此假設(shè)基礎(chǔ)上,目的是打造統(tǒng)一的舱污、可貢獻(xiàn)的存儲(chǔ):在計(jì)算引擎和存儲(chǔ)的交互當(dāng)中呀舔,做到業(yè)界領(lǐng)先的水準(zhǔn)。但是存儲(chǔ)又擁有開放扩灯、基于對(duì)象存儲(chǔ)的低成本優(yōu)勢(shì)媚赖,這樣能解鎖很多業(yè)務(wù),按照不同需求使用不同的計(jì)算引擎驴剔。
3. Paimon 與 Serverless Flink
最后省古,是 Paimon 與 Serverless Flink 在產(chǎn)品上的融合。
首先是元數(shù)據(jù)管理丧失, 以前 Flink 主流是基于 connector 的方式豺妓。但 Paimon 是面向 Catalog 的方式,這需要給 Flink 產(chǎn)品帶來(lái)了使用上的優(yōu)化。第二琳拭,查詢腳本 Flink 產(chǎn)品+Paimon 著力提升了查詢性能训堆,以前是幾十秒才返回,最新版本已優(yōu)化到最小幾秒返回查詢白嘁。第三坑鱼,CDC 入湖 Flink CDC 做了非常多的優(yōu)化,在產(chǎn)品上有對(duì)應(yīng)的方式絮缅。第四鲁沥,包括作業(yè)運(yùn)維,甚至除了流以外耕魄,F(xiàn)link 產(chǎn)品都有一定的批處理能力画恰。所以在 Flink 產(chǎn)品上也支持了工作流調(diào)度,支撐簡(jiǎn)單的數(shù)據(jù)回刷吸奴。長(zhǎng)期來(lái)講允扇,Serverless Flink 和 Paimon往前發(fā)展,達(dá)到流批一體的開發(fā)與不斷的構(gòu)建则奥。
4. Paimon 與 MaxCompute
接下來(lái)分享 Paimon 與 MC 的融合考润,核心是提供一套性能優(yōu)異的讀寫集成方案,我們會(huì)把 Paimon 直接內(nèi)置到MC計(jì)算引擎中读处,且集成MC的向量化讀取糊治,使查詢性能有質(zhì)的飛躍。
除了查詢以外档泽,在MC里面會(huì)支持 Paimon 寫的能力俊戳,包括insert揖赴、override 以及分區(qū)的覆蓋馆匿,這些典型的寫入方式都會(huì)被支持。預(yù)計(jì)會(huì)在七月份發(fā)布燥滑。