一、數據湖框架
目前市面上流行的三大開源數據湖方案分別爲:Delta Lake、Apache Iceberg和Apache Hudi
1、Delta Lake:DataBricks公司推出的一種數據湖方案,官網
2、Apache Iceberg:以類似於SQL的形式高性能的處理大型的開放式表,官網
3、Apache Hudi:Hadoop Upserts anD Incrementals,管理大型分析數據集在HDFS上的存儲,官網
二、Delta Lake
2.1、簡介
Delta Lake 是 DataBricks 公司開源的、用於構建湖倉架構的存儲框架。能夠支持 Spark,Flink,Hive,PrestoDB,Trino 等查詢/計算引擎。作爲一個開放格式的存儲層,它在提供了批流一體的同時,爲湖倉架構提供可靠的,安全的,高性能的保證。
2.2、Delta Lake 關鍵特性
1、ACID事務:通過不同等級的隔離策略,Delta Lake 支持多個 pipeline 的併發讀寫;
2、數據版本管理:Delta Lake 通過 Snapshot 等來管理、審計數據及元數據的版本,並進而支持 time-travel 的方式查詢歷史版本數據或回溯到歷史版本;
3、開源文件格式:Delta Lake 通過 parquet 格式來存儲數據,以此來實現高性能的壓縮等特性;
4、批流一體:Delta Lake 支持數據的批量和流式讀寫;
5、元數據演化:Delta Lake 允許用戶合併 schema 或重寫 schema,以適應不同時期數據結構的變更;
6、豐富的DML:Delta Lake 支持 Upsert,Delete 及 Merge 來適應不同場景下用戶的使用需求,比如 CDC 場景;
三、Apache Iceberg
3.1、簡介
Apache Iceberg 是Netflix 開發開源的,是一種用於大型分析表的高性能格式。Iceberg 爲大數據帶來了 SQL 表的可靠性和簡單性,同時讓 Spark、Trino、Flink、Presto 和 Hive 等引擎能夠同時安全地使用相同的表。
3.2、Apache Iceberg特性
1、格式演變:支持添加,刪除,更新或重命名,並且沒有副作用
2、隱藏分區:可以防止導致錯誤提示或非常慢查詢的用戶錯誤
3、分區佈局演變:可以隨着數據量或查詢模式的變化而更新表的佈局
4、快照控制:可實現使用完全相同的錶快照的可重複查詢,或者使用戶輕鬆檢查更改
5、版本回滾:使用戶可以通過將表重置爲良好狀態來快速糾正問題
6、快速掃描數據:無需使用分佈式SQL引擎即可讀取表或查找文件
7、數據修剪優化 :使用表元數據使用分區和列級統計信息修剪數據文件
8、支持事務 :序列化隔離,表更改是原子性的,讀取操作永遠不會看到部分更改或未提交的更改
9、高併發:高併發寫入使用樂觀併發,即使寫入衝突,也會重試以確保兼容更新成功
四、Apache Hudi
4.1、簡介
Hudi是Hadoop Updates and Incrementals的簡寫,它是由Uber開發並開源的Data Lakes解決方案。Hudi 用於管理的數據庫層上構建具有增量數據管道的流式數據湖,同時針對湖引擎和常規批處理進行了優化。簡言之,Hudi是一種針對分析型業務的、掃描優化的數據存儲抽象,它能夠使DFS數據集在分鐘級的時延內支持變更,也支持下游系統對這個數據集的增量處理。
4.2、Apache Hudi 特性
1、使用快速、可插入的索引進行更新、刪除
2、增量查詢,記錄級別更改流
3、事務、回滾、併發控制
4、自動調整文件大小、數據集羣、壓縮、清理
5、用於可擴展存儲訪問的內置元數據跟蹤
6、式攝取、內置 CDC 源和工具
7、支持 Spark、Presto、Trino、Hive 等的 SQL 讀/寫
8、向後兼容的模式演變和實施
————————————————