1. 数据湖物理存储层

数据湖的存储层主要包括大数据生态的 HDFS 文件系统、主流的云原生对象存储。数据湖物理存储需要具备同时支持 HDFS 生态和云原生的生态。
2. 数据湖文件格式

数据湖文件格式主要包括 Avro、Parquet、ORC 等主流的文件格式。其中,Avro 是行级别的,有利于写。Parquet 和 ORC 是列级别的,更方便读(支持列裁剪和过滤)。
3. 数据湖表格式
(1)数据湖表格式的功能特点
功能特点主要包括以下几个方面:
① DML 和 SQL 支持
直接在分布式文件上提供 Merge Into、Update 和 Delete 操作。除了 SQL,有些还支持Scala/Java 和 Python API
② Schema Evolution
Table format 的一个关键特性,意味着在不破坏任何内容甚至扩大某些类型的情况下添加新列。
③ ACID 事务、回滚、并发控制
ACID 事务确保所有更改都成功提交或回滚。确保永远不会以不一致的状态结束。有不同的并发控制,例如保证读取和写入之间的一致性。
④ 时间旅行
数据湖表格式会将存储在数据湖中的大数据版本化并形成多版本。可以访问该数据的任何历史版本,在意外写入或删除错误的情况下回滚数据。
⑤ 文件布局优化
随着时间的推移摄入的小文件会增加,但查询数千个小文件很慢,文件布局优化可以将文件碎片重新整理为更大的文件,从而在许多方面提高性能。
⑥ 统一批流处理
数据架构无需在批处理和流式中区分,它们都以相同的表视图对外暴露,复杂性更低,速度更快。无论是从流还是批处理中读取都能获取一致的数据快照。
(2)数据湖表格式-社区活跃度

Delta Lake、Apache Iceberg 和 Apache Hudi 是目前最突出的开源数据湖 Table Format 产品。Delta Lake 2.0 在发布之后一路飙升,Star 的活跃数最高。起源最早的是 Hudi,其次是 Iceberg。
(3)数据湖表格式-读写特性

数据湖表格式在读写上需要关心的几个点,一是增量查询(Incremental Query),它在构建流数仓或批数仓时是一个非常重要的特性。二是时间旅行(Time Travel),我们能用它对数据进行回溯和重放,去做数据的回补。三是并发(Concurrency),不同的 Job 可以同时操作一张表。四是主键(Primary Keys),有了它可以像传统数据库一样更好地去做更新,比如进行 Upsert 操作。
(4)数据湖表格式-表服务

表服务主要关心 Compaction 和 Cleaning,还有 Schema Evolution 等能力。
(5)数据湖表格式-平台能力

平台能力主要关注数据质量检测(Data Quality Validation)、数据写入监控指标(Monitoring)的成熟度等。
(6)数据湖表格式-生态支持

生态支持方面基本上差不多,都做的挺好。