写点什么

Hudi 系列:Hudi 核心概念之时间轴 (TimeLine)

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

    阅读完需:约 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



一. 时间轴(TimeLine)


1.1 时间轴(TimeLine)概念


Hudi 的核心是维护在不同时刻(Instant)在表上执行的所有操作的时间轴,提供表的即时视图,同时还有效地支持按时间顺序检索数据



1.2 Hudi 的时间线由组成


requested instant :


表示在时间线上请求操作的时间并充当事务 ID 的即时时间。在请求操作之前,应该生成一个不可变的操作计划。 
复制代码


completed instant :


表示时间轴上操作完成时间的即时时间。对表数据/元数据的所有相关更改都应在操作完成之前进行。
复制代码


state :


动作的状态。在操作的生命周期中,有效状态为 REQUESTED、INFLIGHT 和 COMPLETED。
复制代码


type :


执行的操作类型。
复制代码


1.3 时间线上的 Instant action 操作类型


hudi 保证在时间线上的操作都是基于即时时间的,两者的时间保持一致并且是原子性的,以下是有效的操作类型。


COMMIT -


写入操作表示将一批记录原子写入表中的基本文件中。
复制代码


DELTA_COMMIT -


写入操作表示将一批记录原子写入读合并类型表,其中部分/全部数据可以仅写入增量日志。
复制代码


REPLACE_COMMIT -


写入操作以原子方式将表中的一组文件组替换为另一个文件组。用于实现批量写入操作,如insert_overwrite、delete_partition等,以及表服务,如集群。
复制代码


CLEANS -


表服务通过删除这些文件来从表中删除不再需要的旧文件切片。
复制代码


COMPACTION -


表服务通过将增量文件合并到基本文件中来协调基本文件和增量文件之间的差异数据。
复制代码


LOGCOMPACTION -


表服务将多个小日志文件合并到同一文件分片中的一个更大的日志文件中。 
复制代码


CLUSTERING -


表服务以优化的排序顺序或存储布局重写现有文件组,作为表中的新文件组。
复制代码


INDEXING -


表服务在表的列上构建请求类型的索引,与正在进行的写入完成时表的状态保持一致。
复制代码


ROLLBACK -


表示回滚了不成功的写入操作,从存储中删除了此类写入期间生成的任何部分/未提交的文件。
复制代码


SAVEPOINT -


将某些文件切片标记为“已保存”,这样清理器就不会删除它们。在发生灾难/数据恢复场景时,它有助于将表恢复到时间线上的某个点,或者在这些时刻执行时间旅行查询。
复制代码


RESTORE -


在发生灾难/数据恢复场景时,将表恢复到时间线上的给定保存点。
复制代码


1.4 时间线上 State 状态类型


任何给定的瞬间都可以处于以下状态之一


requested:表示一个动作已被安排,但尚未启动


inflight:表是当前正在执行操作


completed:表是在时间线上完成了操作


1.5 时间线官网实例



上图显示了进程 A 和 B 生成的时间如何单调增加,即使进程 B 在开始时的本地时钟比 A 低,但通过等待 x ms 的不确定性窗口过去。事实上,考虑到 Hudi 的目标交易持续时间 > 1 秒,我们可以承受更高的不确定性界限(> 100 毫秒),从而保证极高保真度的时间生成。
复制代码


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

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

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

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

评论

发布
暂无评论
Hudi系列:Hudi核心概念之时间轴(TimeLine)_京东科技开发者_InfoQ写作社区