1、DataFunSummitDataFunSummit#20242024PaimonPaimon架構下的數據湖探索架構下的數據湖探索陳卓宇-Paimon社區挑戰挑戰PaimonPaimon存儲實現存儲實現CDC IngestionCDC Ingestion數倉業務對存儲的期望數倉業務對存儲的期望目錄目錄 CONTENTCONTENTLookUp JoinLookUp JoinDataFunSummitDataFunSummit#202420240101挑戰挑戰Lambda Lambda 架構架構Lambda Lambda 架構架構DataFunSummitDataFunSummit#202420
2、240202數倉場景對存儲的期望數倉場景對存儲的期望數倉場景對存儲的期望數倉場景對存儲的期望1.批讀場景:要支持分析、ETL能力2.流讀場景:要支持有queue能力3.寫場景:要有更新的能力4.點查的場景:lookup join能力5.存儲在不同場景:要有做trade off的能力PaimonPaimon數據湖格式數據湖格式在內部:Paimon 將列式文件存儲在文件系統/對象存儲上文件的元數據保存在manifest文件中,提供大規模存儲和數據跳過。對于主鍵表,采用LSM樹結構,支持大數據量更新和高性能查詢。提供表抽象:在批量執行模式下,它就像一個Hive表在流執行模式下,它的作用就像一個消息隊
3、列PaimonPaimon數據湖格式數據湖格式Paimon是什么?是對LakeHouse中,流批統一存儲的實現本質上是在計算引擎與底層存儲之間,維護了一套,針對表級別文件粒度的元數據管理API優勢 在實時的場景,和Flink生態的結合的更好DataFunSummitDataFunSummit#202420240303PaimonPaimon存儲實現存儲實現文件組織文件組織 snapshot:數據某一個時刻的狀態 schema:元信息 manifest、partition:查詢分析場景下通過Data Skipping的方式來優化查詢效率 bucket:桶是讀取和寫入的最小存儲單元典型的典型的LS
4、MLSM樹實現樹實現DataFunSummitDataFunSummit#202420240505CDC IngestionCDC Ingestion什么場景使用?重構數倉ods層構建什么方式?1.基于CDC增量的實時同步2.自動建表3.Schema Evolution解決什么問題?1.集中式全量同步,上游壓力大2.換取數據鏈路的產出提前3.鏈路復雜度將低,穩定性提高4.低成本同步大量小表CDC IngestionCDC IngestionSchema EvolutionSchema EvolutionSchema Evolution本身是解決是什么問題?協作問題那這個“協作”怎么實現那?1.
5、上游數據源字段變更后下游能感知到字段變更2.阻塞寫流程3.進行表的Schema變更4.繼續寫流程實現流程實現流程實現流程實現流程數據完整性推理怎么實現?數據完整性推理怎么實現?什么場景?1.業務場景:0點前手機進隧道,數據緩存在本地,出隧道上報2.故障場景:0點mysql宕機什么方式?1.提取CDC事件數據的Event Time2.空閑水位推動策略3.空閑Tag生成策略解決什么問題?空閑時長和數據完整性推理的trade offDataFunSummitDataFunSummit#202420240404LookUp JoinLookUp JoinLookUp JoinLookUp Join什么
6、場景使用?什么場景使用?數倉基于事實表關聯實時維度信息或緩慢變化維度信息的多維度數據分析場景。什么方式?什么方式?訪問外部存儲數據然后將維度字段拼接到當前這條數據上面。好比兩層 For 循環。對于驅動表中的每一行,循環檢查被查找表的每一行,如果滿足 Join 條件則作為 Join 結果輸出解決什么問題?解決什么問題?關聯出表的額外數據屬性Paimon LookUp JoinPaimon LookUp Join實現實現期望的能力是什么:期望的能力是什么:1.根據提供的鍵從查找表中檢索數據,要支持Append table、PrimaryKey table2.支持下推做列裁剪,起到查詢時只考慮符合特
7、定條件的數據3.支持刷新或更新查找表中的數據,保證查找操作總是針對最新的數據集進行怎么基于文件抽象怎么基于文件抽象點查接口接口 Lookup Join 會通過迭代的方式將paimon表對應的數據文件加載到內存排序緩沖區。在BulkLoader到RocksDB,然后基于RocksDB提供點查接口。Paimon LookUp JoinPaimon LookUp Join設計設計LookUp JoinLookUp Join 會有什么樣的問題?1.數據分散問題2.內存限制3.過度使用磁盤為了解決這些問題:1.實施更有效的數據分區策略,減少每個TaskManager需要拉取的數據量2.使用獨立基于內存的LookUp服務QueryServiceQueryService感謝觀看感謝觀看謝謝觀看Apache Paimon 一鍵三連:加入 Paimon 釘釘交流群,Paimon 研發人員實時答疑:搜索群號 1088000191910880001919關注 Paimon 微信公眾號,大量生產實踐與技術內幕:搜索公眾號 Apache Paimon點贊 Paimon Github,搜索網址https:/