写点什么

Hudi 系列:Hudi 核心概念之文件布局 (Storage Layouts)

  • 2025-10-14
    北京
  • 本文字数:1501 字

    阅读完需:约 5 分钟

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 目前支持以下基础文件格式。


用于矢量化读取、列压缩和高效列式访问的列式格式,适用于分析/数据科学
复制代码


用于快速扫描以读取整个记录的行式 avro 文件
复制代码


用于高效搜索索引记录的随机访问优化 HFile(基于 SSTable 格式)
复制代码



2.日志文件


日志文件存储基础文件创建后对基础文件的增量更改(部分或全部),例如更新、插入和删除。日志文件包含不同的块(数据、命令、删除块等),这些块对基础文件的特定更改进行编码。数据块对基础文件的更新/插入进行编码,并可自定义以支持不同的需求。


面向行的 avro 文件,用于快速/轻量级写入
复制代码


随机访问优化的 HFile,用于高效搜索索引记录(基于 SSTable 格式)
复制代码


列式 parquet 文件,用于矢量化日志合并。
复制代码


3. 存储格式版本控制


Hudi 存储格式的元素(如日志格式、日志块结构、时间线文件/数据模式)都是版本化的,并与给定的表版本相关联。表版本是一个单调递增的数字,每次存储中产生的某些位发生变化时,该数字就会增加。


Backwards compatible reading


Hudi 版本向后兼容,以确保新软件版本可以读取最近的旧表版本。跨不同引擎升级 Hudi 的推荐方法是首先升级所有读取器(例如使用表的交互式查询引擎),然后升级任何/所有写入器和表服务。Hudi 存储引擎还实现了自动升级功能,可以在后续写入操作中优雅地执行表版本升级,通过自动执行任何必要的步骤而无需停机查询/读取。
复制代码


Backwards compatible writing


但是,这可能并非总是可行的,因为基于 Hudi 构建的数据平台可能具有可以同时充当读取器和写入器的多阶段管道。在这种情况下,Hudi 升级需要通过首先升级最下游的作业来执行,一直跟踪到可能由摄取系统写入的第一个 Hudi 表。为了简化此过程,Hudi 还允许写入最近的旧表版本,以便可以首先在同一个旧表版本之上在整个部署中推出新的 Hudi 软件二进制文件。一旦所有作业和引擎都有了新的二进制文件,那么就可以按任何顺序升级到较新的表版本,并且读者将动态适应
复制代码


4. 配置


以下写入器配置控制写入旧表版本和自动升级行为。



文献: https://hudi.apache.org/docs/overview

发布于: 刚刚阅读数: 5
用户头像

拥抱技术,与开发者携手创造未来! 2018-11-20 加入

我们将持续为人工智能、大数据、云计算、物联网等相关领域的开发者,提供技术干货、行业技术内容、技术落地实践等文章内容。京东云开发者社区官方网站【https://developer.jdcloud.com/】,欢迎大家来玩

评论

发布
暂无评论
Hudi系列:Hudi核心概念之文件布局(Storage Layouts)_京东科技开发者_InfoQ写作社区