1.Hudi是什么?
Apache Hudi是一个Data Lakes的开源方案,Hudi是Hadoop Upserts Delete and Incremental的简写,它是由Uber开发并开源的Data Lakes解决方案。Hudi能够基于HDFS之上管理大型分析数据集,可以对数据进行插入、更新、增量消费等操作,主要目的是高效减少摄取过程中的数据延迟。
Apache Hudi官方网站是: Apache Hudi
官方对 Hudi 的定义如下:
Apache Hudi is a transactional data lake platform that brings database and data warehouse capabilities to the data lake. Hudi reimagines slow old-school batch data processing with a powerful new incremental processing framework for low latency minute-level analytics.


Apache Hudi将核心仓库和数据库功能直接引入数据湖。Hudi提供了表、事务、高效的upserts/delete、高级索引、流摄取服务、数据集群/压缩优化和并发,同时保持数据的开源文件格式。Hudi基于Parquet列式存储与Avro行式存储,同时避免创建小文件,实现高效率低延迟的数据访问。
Apache Hudi不仅非常适合于流工作负载,而且还允许创建高效的增量批处理管道。
Apache Hudi可以轻松地在任何云存储平台上使用。Hudi的高级性能优化,使分析工作负载更快的任何流行的查询引擎,包括Apache Spark、Flink、Presto、Trino、Hive、Impala等。
Apache Hudi 的特点:
- 可插拔索引机制支持快速Upsert/Delete
- 支持增量拉取表变更以进行处理
- 支持事务提交及回滚,并发控制
- 支持Spark、Presto、Trino、Hive、Flink等引擎的SQL读写
- 自动管理小文件,数据聚簇,压缩,清理
- 流式摄入,内置CDC源和工具
- 内置可扩展存储访问的元数据跟踪
- 向后兼容的方式实现表结构变更的支持
- 写入器和查询之间的快照隔离
- 用于数据恢复的savepoint保存点,Hudi通过Savepoint来实现数据恢复
Apache Hudi在DFS的数据集上提供以下流原语
- 插入更新 (如何改变数据集?)
- 增量拉取 (如何获取变更的数据?)
这两个原语是Hudi 使用最广泛的两个功能,这使用户能够吸收更改数据捕获,并将其大规模应用于数据湖。
Apache Hudi 设计原则:
-
流式读/写:Hudi借鉴了数据库设计的原理,从零设计,应用于大型数据集记录流的输入和输出。为此,Hudi提供了索引实现,可以将记录的键快速映射到其所在的文件位置。同样,对于流式输出数据,Hudi通过其特殊列添加并跟踪记录级的元数据,从而可以提供所有发生变更的精确增量流。
-
自管理:Hudi注意到用户可能对数据新鲜度(写友好)与查询性能(读/查询友好)有不同的期望,它支持了三种查询类型,这些类型提供实时快照,增量流以及稍早的纯列数据。在每一步,Hudi都努力做到自我管理(例如自动优化编写程序的并行性,保持文件大小)和自我修复(例如:自动回滚失败的提交),即使这样做会稍微增加运行时成本(例如:在内存中缓存输入数据已分析工作负载)。如果没有这些内置的操作杠杆/自我管理功能,这些大型流水线的运营成本通常会翻倍。
-
万物皆日志:Hudi还具有 append only、云数据友好的设计,该设计实现了日志结构化存储系统的原理,可以无缝管理所有云提供商的数据。
-
键-值数据模型:在写方面,Hudi表被建模为键值对数据集,其中每条记录都有一个唯一的记录键。此外,一个记录键还可以包括分区路径,在该路径下,可以对记录进行分区和存储。这通常有助于减少索引查询的搜索空间。
2.Hudi实现原理

写Hudi表的组件使用了一种受支持的方式嵌入到Apache Spark作业中,它会在支持DFS的存储上生成代表Hudi表的一组文件。然后,在具有一定保证的情况下,诸如Apache Spark、Presto、Apache Hive之类的查询引擎可以查询该表。
Hudi表的三个主要组件:
- 有序的时间轴元数据。类似于数据库事务日志。
- 分层布局的数据文件:实际写入表中的数据。
- 索引(多种实现方式):映射包含指定记录的数据集。
Hudi提供了以下功能来对基础数据进行写入、查询,这使其成为大型数据湖的重要模块:
- 支持快速,可插拔索引的upsert();
- 高效、只扫描新数据的增量查询;
- 原子性的数据发布和回滚,支持恢复的Savepoint;
- 使用mvcc(多版本并发控制)风格设计的读和写快照隔离;
- 使用统计信息管理文件大小;
- 已有记录update/delta的自管理压缩;
- 审核数据修改的时间轴元数据;
- 满足GDPR(通用数据保护条例)、数据删除功能。


872

被折叠的 条评论
为什么被折叠?



