Apache Hudi(Hadoop Upsert Delete and Incremental)是一个开源的数据管理框架,用于简化增量数据处理和数据管道开发。
该框架通过对存储在S3中的Hudi数据集进行记录级别的更新和删除,为基于Hadoop的数据湖带来了ACID合规性。
带有快速、可插拔索引的Upserts、Deletes。
增量查询、记录级别的变更流。
事务、回滚、并发控制。
自动文件大小调整、数据聚类、压缩、清理。
流式摄取、内置CDC源和工具。
向后兼容的模式演化和强制执行。
从Spark读写,从Presto、Trino、Hive等读取。
Hudi 数据集由一个索引组成,该索引将行映射到 S3 中的单个文件; 以及一个timeline,该时间线记录对该数据集所做的单个更改。
Hudi 架构中没有持久化守护进程,所有这些项目(索引、数据文件和元数据)都存储在 S3 中。
Hudi 数据集可以使用 Hive、Flink、Presto 和 Spark 进行读取。
Hudi 支持以下表类型。
Copy On Write : 使用专门的列式文件格式(例如 parquet)存储数据。更新只需要版本化和重写文件,通过执行同步合并来完成。 CoW 表非常适合读密集型工作负载。
Merge On Read : 使用列式(例如 parquet)和行式(例如 avro)文件格式的组合存储数据。更新被记录到增量文件中,并稍后同步或异步地被压缩到生成新版本的列式文件中。 MoR 表非常适合写密集型工作负载。
下表总结了这两种表类型之间的权衡:
权衡 | CopyOnWrite | MergeOnRead |
---|---|---|
数据延迟 | 更高 | 更低 |
查询延迟 | 更低 | 更高 |
更新成本(I/O) | 更高(重写整个 parquet) | 更低(追加到增量日志) |
Parquet 文件大小 | 更小(高更新(I/0)成本) | 更大(低更新成本) |
写放大 | 更高 | 更低(取决于压缩策略) |