首页 > 其他分享 >一口气学完Hudi——核心概念之时间轴

一口气学完Hudi——核心概念之时间轴

时间:2023-04-04 23:33:24浏览次数:42  
标签:Hudi 学完 数据管理 时间轴 action 操作 数据

Apache Hudi 是一个基于 Hadoop 的分布式数据存储系统,支持存储结构化和非结构化数据。Hudi 的时间轴 (TimeLine) 是其重要的组成部分,用于管理和跟踪数据的变化历史。在本文中,我将详细介绍 Hudi 时间轴的基本概念、特点以及如何使用它来进行数据管理。

一、Hudi 时间轴的基本概念

Hudi 时间轴用于跟踪和管理数据的变化历史。它支持对数据的增删改查,并且能够高效地处理大量数据。Hudi的核心是维护表上在不同的即时时间(instants)执行的所有操作的时间轴(timeline),这有助于提供表的即时视图,同时还有效地支持按到达顺序检索数据。一个instant由以下三个部分组成:

  • Instant action : 操作类型
  • Instant time : 时间戳
  • state : 状态

Instant action:在表上执行的操作类型

  • COMMITS:一次commit表示将一批数据原子性地写入一个表。

  • CLEANS:清除表中不再需要的旧版本文件的后台活动。

  • DELTA_COMMIT:增量提交指的是将一批数据原子性地写入一个MergeOnRead类型的表,其中部分或所有数据可以写入增量日志。

  • COMPACTION:合并Hudi内部差异数据结构的后台活动,例如:将更新操作从基于行的log日志文件合并到列式存储的数据文件。在内部,COMPACTION体现为timeline上的特殊提交。

  • ROLLBACK:表示当commit/delta_commit不成功时进行回滚,其会删除在写入过程中产生的部分文件。

  • SAVEPOINT:将某些文件组标记为已保存,以便其不会被删除。在发生灾难需要恢复数据的情况下,它有助于将数据集还原到时间轴上的某个点。

Instant time

通常是一个时间戳(例如:20190117010349),它按照动作开始时间的顺序单调增加。

State

  • REQUESTED:表示某个action已经调度,但尚未执行。
  • INFLIGHT:表示action当前正在执行。
  • COMPLETED:表示timeline上的action已经完成。

image.png

上图中采用时间(小时)作为分区字段,从 10:00 开始陆续产生各种 commits,10:20 来了一条 9:00 的数据,根据event time该数据仍然可以落到 9:00 对应的分区,通过 timeline 直接消费 10:00 (commit time)之后的增量更新(只消费有新 commits 的 group),那么这条延迟的数据仍然可以被消费到。

二、Hudi 时间轴的特点

Hudi 时间轴具有以下几个特点:

  1. 可扩展性:Hudi 时间轴支持水平扩展,能够轻松地添加更多的节点来存储更多的数据。
  2. 高可用性:Hudi 时间轴支持自动故障转移,能够在节点出现故障时自动切换到备用节点上。
  3. 高效性:Hudi 时间轴支持高效的数据管理和处理,能够按时间粒度进行数据聚合和查询。
  4. 可定制性:Hudi 时间轴支持自定义数据模型和查询语言,能够根据实际需求进行定制化。

三、如何使用 Hudi 时间轴进行数据管理

Hudi 时间轴支持多种数据管理场景,包括批量操作、实时操作和事件流操作。下面将介绍如何使用 Hudi 时间轴进行数据管理:

  1. 批量操作:批量操作是指对数据进行批量的增删改查操作。可以使用 Hudi 时间轴的命令行工具进行批量操作,也可以使用 API 进行批量操作。
  2. 实时操作:实时操作是指对数据进行实时的增删改查操作。可以使用 Hudi 时间轴的 API 进行实时操作,也可以使用命令行工具进行实时操作。
  3. 事件流操作:事件流操作是指对数据进行事件流的增删改查操作。可以使用 Hudi 时间轴的 API 进行事件流操作,也可以使用命令行工具进行事件流操作。

四、结论

Hudi 时间轴是 Hudi 系统中的重要组成部分,它支持高效的数据管理和处理,能够跟踪和管理数据的变化历史。Hudi 时间轴具有可扩展性、高可用性、高效性和可定制性等特点,能够满足不同数据管理场景的需求。

标签:Hudi,学完,数据管理,时间轴,action,操作,数据
From: https://blog.51cto.com/hiszm/6170095

相关文章

  • 一口气学完Hudi——概述
    简介ApacheHudi(HadoopDataUnifiedStorageSystem)是一个用于存储和处理大规模数据集的开源分布式文件系统。它最初是由ApacheHadoop项目开发的,并已成为Hadoop生态系统的重要组成部分之一。Hudi的特点在于它能够统一存储和管理不同类型的数据,例如文本、图像、音频和......
  • Codeforces Gym 103931F - Forest of Magic(时间轴分块+线段树合并)
    一个巨烦的时间轴分块做法,有点类似于P2137Gty的妹子树先考虑静态的情况。看上去就一脸线段树合并对吧?一次修改的操作对一个点\(x\)贡献可以写成\(k·dep_x+b\)的形式,开两棵线段树合并维护一次项和零次项系数即可。由于静态问题可做,因此考虑时间轴分块。设阈值\(B\),每\(B......
  • 数据湖选型指南|Hudi vs Iceberg 数据更新能力深度对比
    数据湖作为新一代大数据基础设施,近年来持续火热,许多前线的同学都在讨论数据湖应该怎么建,许多企业也都在构建或者计划构建自己的数据湖。基于此,自然引发了许多关于数据湖选......
  • 数组的学习(偷懒还没有学完)
    数组数组的出现,是为了我们更加方便的操作数据。数组是存储同一种数据类型多个元素的集合,也可以看做一个容器。数组既可以存储基本数据类型,也可以存储引用数据类型数组......
  • Apache Hudi 0.13.0版本重磅发布!
    ApacheHudi0.13.0版本引入了许多新功能,包括Metaserver、变更数据捕获、新的RecordMergeAPI、Deltastreamer支持新数据源等。虽然此版本不需要表版本升级,但希望用户......
  • Apache Hudi 负载类Payload使用案例剖析
    在Hudi中可以根据业务场景为Hudi表配置负载类Payload,它用于在更新期间合并同一记录的两个版本。本文将深入了解有效负载类的用途以及可以使用的所有不同方式。配置:hoo......
  • Spring注解篇,学完注解深入了解SpringBoot更容易
    由于SpringBoot项目底层也都是Spring,使用SpringBoot就需要对Spring的注解有一定的了解,这次就把Spring的部分注解聊一下。熟悉了Spring的注解使用SpringBoot开发更是得心......
  • Hudi了解
    1.数据库引擎初识    数据引擎大致包含数据结构、存储形式、数据关系、数据更新方式、高效增删改查、日志,围绕这几个方面进行相应权重处理,得到不一样的效果,内容可以整......
  • Apache Hudi 流转批 场景实践
    背景在某些业务场景下,我们需要一个标志来衡量hudi数据写入的进度,比如:Flink实时向Hudi表写入数据,然后使用这个Hudi表来支持批量计算并通过一个flag来评估它的分区数......
  • 学完Scrapy-Splash秒变爬虫大佬
    在做爬虫的时候,大多数的网页中会存在数据动态加载的部分,而且多数都是后期渲染上的。正常情况下爬虫程序仅能爬取被渲染过的数据。因此我们看到的数据也许并非是爬虫直接获......