Hudi 系列:Hudi 核心概念之文件布局 (Storage Layouts)
Hudi 系列:Hudi 核心概念(版本 1.0)
•Hudi 架构
◦一. 时间轴(TimeLine)
▪1.1 时间轴(TimeLine)概念
▪1.2 Hudi 的时间线由组成
▪1.3 时间线上的 Instant action 操作类型
▪1.4 时间线上 State 状态类型
▪1.5 时间线官网实例
◦二. 文件布局
◦三. 索引
▪3.1 简介
▪3.2 对比 Hive 没有索引的区别
▪3.3 Hudi 索引类型
▪3.4 全局索引与非全局索引
◦四. 表类型
▪4.1 COW:(Copy on Write)写时复制表
▪4.1.1 概念
▪4.1.2 COW 工作原理
▪4.1.3 COW 表对表的管理方式改进点
▪4.2 MOR:(Merge on Read)读时复制表
▪4.2.1 概念
▪4.2.2 MOR 表工作原理
▪4.3 总结了两种表类型之间的权衡
◦五. 查询类型
▪5.1 Snapshot Queries
▪5.2 Incremental Queries
▪5.3 Read Optimized Query
下面描述了 Hudi 表存储文件的一般组织方式。
•Hudi 将数据表组织到存储中基本路径下的目录结构中。
•根据表架构中定义的分区列,表可以选择性地分为多个分区。
•在每个分区中,文件被组织成文件组,由文件 ID (uuid) 唯一标识
•每个文件组包含多个文件切片。
•每个切片包含一个基本文件 (parquet/orc/hfile)(由配置 - hoodie.table.base.file.format 定义),由在特定时刻完成的提交写入,以及一组日志文件 (.log.),由在下一个基本文件请求时刻之前完成的提交写入。
•Hudi 采用多版本并发控制 (MVCC),其中压缩操作合并日志和基本文件以生成新的文件切片,清理操作删除未使用/较旧的文件切片以回收文件系统上的空间。
•所有元数据(包括时间线、元数据表)都存储在基本路径下的特殊 .hoodie 目录中。

1.基础文件
基础文件存储完整记录,而更改记录则存储在下面的增量日志文件中。Hudi 目前支持以下基础文件格式。

2.日志文件
日志文件存储基础文件创建后对基础文件的增量更改(部分或全部),例如更新、插入和删除。日志文件包含不同的块(数据、命令、删除块等),这些块对基础文件的特定更改进行编码。数据块对基础文件的更新/插入进行编码,并可自定义以支持不同的需求。
3. 存储格式版本控制
Hudi 存储格式的元素(如日志格式、日志块结构、时间线文件/数据模式)都是版本化的,并与给定的表版本相关联。表版本是一个单调递增的数字,每次存储中产生的某些位发生变化时,该数字就会增加。
Backwards compatible reading
Backwards compatible writing
4. 配置
以下写入器配置控制写入旧表版本和自动升级行为。
文献: https://hudi.apache.org/docs/overview
更多可以参考(1.0 以下的版本): http://xingyun.jd.com/shendeng/article/detail/29584?forumId=31&jdme_router=jdme://web/202206081297?url%3Dhttp%3A%2F%2Fsd.jd.com%2Farticle%2F29584
评论