增加hudi 索引知识 #33
@ -1,12 +1,10 @@
|
|||||||
|
|
||||||
# 1. Hudi 简介
|
# 1. Hudi 简介
|
||||||
|
|
||||||
Apache Hudi将核心仓库和数据库功能直接带到数据湖中。Hudi提供了表、事务、高效upserts/删除、高级索引、流式摄取
|
Apache Hudi将核心仓库和数据库功能直接带到数据湖中。Hudi提供了表、事务、高效upserts/删除、高级索引、流式摄取服务、数据群集/压缩优化以及并发,同时保持数据以开源文件格式保留。
|
||||||
服务、数据群集/压缩优化以及并发,同时保持数据以开源文件格式保留。
|
|
||||||
|
|
||||||
Hudi是`Hadoop Upserts and Incrementals`缩写,用于管理分布式文件系统DFS上大型分析数据集存储。Hudi是一种针对分析
|
Hudi是`Hadoop Upserts and Incrementals`缩写,用于管理分布式文件系统DFS上大型分析数据集存储。
|
||||||
型业务的、扫描优化的数据存储抽象,它能够使DFS数据集在分钟级的时延内支持变更,也支持下游系统对这个数据集的增量
|
Hudi是一种针对分析型业务的、扫描优化的数据存储抽象,它能够使DFS数据集在分钟级的时延内支持变更,也支持下游系统对这个数据集的增量处理。
|
||||||
处理。
|
|
||||||
|
|
||||||
|
|
||||||
## 1.1 Hudi特性和功能
|
## 1.1 Hudi特性和功能
|
||||||
@ -106,12 +104,25 @@ Hudi采用多版本并发控制(MVCC),其中压缩操作合并日志和基
|
|||||||
|
|
||||||
使用排他列式文件格式(比如:parquet)存储,简单地更新版本&通过在写入期间执行同步合并来重写文件。
|
使用排他列式文件格式(比如:parquet)存储,简单地更新版本&通过在写入期间执行同步合并来重写文件。
|
||||||
|
|
||||||
|
下面从概念上说明了这是如何工作的,当数据写入写时复制表和在其上运行的两个查询时。
|
||||||
|
|
||||||
|
![pic](https://hudi.apache.org/cn/assets/images/hudi_cow-9750b5f006646e2d1874ad18b355d200.png)
|
||||||
|
|
||||||
|
在写入数据时,对现有文件组的更新会为该文件组生成一个带有提交即时时间戳的新切片,而插入会分配一个新文件组并为该文件组写入其第一个切片。上面红色标出来的就是新提交的。
|
||||||
|
|
||||||
|
|
||||||
#### 2.3.1.1 Merge On Read
|
#### 2.3.1.1 Merge On Read
|
||||||
|
|
||||||
使用列式(比如:parquet) + 基于行的文件格式 (比如:avro) 组合存储数据。更新记录到增量文件中,然后压缩以同步或
|
使用列式(比如:parquet) + 基于行的文件格式 (比如:avro) 组合存储数据。更新记录到增量文件中,然后压缩以同步或
|
||||||
异步生成新版本的柱状文件。
|
异步生成新版本的柱状文件。
|
||||||
|
|
||||||
|
|
||||||
|
将每个文件组的传入追加存储到基于行的增量日志中,以通过在查询期间将增量日志动态应用到每个文件id的最新版本来支持快照查询。
|
||||||
|
因此,这种表类型试图均衡读取和写入放大,以提供接近实时的数据。
|
||||||
|
|
||||||
|
![pic](https://hudi.apache.org/cn/assets/images/hudi_mor-5f9da4e0c57c9ee20b74b31c035ba0e6.png)
|
||||||
|
|
||||||
|
|
||||||
| 对比维度 | CopyOnWrite | MergeOnRead |
|
| 对比维度 | CopyOnWrite | MergeOnRead |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| 数据延迟 | Higher | Lower |
|
| 数据延迟 | Higher | Lower |
|
||||||
@ -123,27 +134,33 @@ Hudi采用多版本并发控制(MVCC),其中压缩操作合并日志和基
|
|||||||
|
|
||||||
### 2.3.2 查询类型
|
### 2.3.2 查询类型
|
||||||
|
|
||||||
#### 2.3.2.1 快照查询
|
- 快照查询:在此视图上的查询可以查看给定提交或压缩操作时表的最新快照。
|
||||||
查看给定提交或压缩操作的表的最新快照。
|
- 对于读时合并表(MOR表) 该视图通过动态合并最新文件切片的基本文件(例如parquet)和增量文件(例如avro)来提供近实时数据集(几分钟的延迟)。
|
||||||
|
- 对于写时复制表(COW表),它提供了现有parquet表的插入式替换,同时提供了插入/删除和其他写侧功能。
|
||||||
|
- 增量查询:对该视图的查询只能看到从某个提交/压缩后写入数据集的新数据。提供了流式变化记录,用来支持增量读取
|
||||||
|
- 读优化查询:
|
||||||
|
|
||||||
|
# 3. Hudi索引
|
||||||
|
|
||||||
|
Hudi目前支持下面索引:
|
||||||
|
- Bloom索引:采用根据记录key构建的布隆过滤器,还可以选择使用记录key范围修剪候选文件。
|
||||||
|
- Simple索引:针对从存储上的表中提取的键对传入的更新/删除记录执行精益联接。
|
||||||
|
- HBase索引:将index信息保存到Hbase当中。
|
||||||
|
- 自定义索引:自定义实现的索引。
|
||||||
|
|
||||||
|
![pic](https://hudi.apache.org/cn/assets/images/Fact20tables-0255e82a96683124f7116060e9f76cbe.gif)
|
||||||
|
|
||||||
|
|
||||||
#### 2.3.2.2 增量查询
|
# 4. Hudi 数据管理
|
||||||
|
|
||||||
|
## 4.1 Hudi 表数据结构
|
||||||
|
|
||||||
#### 2.3.2.3 读优化查询
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 3. Hudi 数据管理
|
|
||||||
|
|
||||||
## 3.1 Hudi 表数据结构
|
|
||||||
|
|
||||||
Hudi 表的数据文件一般使用 HDFS 进行存储。从文件路径和类型来讲,Hudi表的存储文件分为两类。
|
Hudi 表的数据文件一般使用 HDFS 进行存储。从文件路径和类型来讲,Hudi表的存储文件分为两类。
|
||||||
- .hoodie 文件,
|
- .hoodie 文件,
|
||||||
- amricas 和 asia 相关的路径是 实际的数据文件,按分区存储,分区的路径 key 是可以指定的。
|
- amricas 和 asia 相关的路径是 实际的数据文件,按分区存储,分区的路径 key 是可以指定的。
|
||||||
|
|
||||||
### 3.1.1 .hoodie文件
|
### 4.1.1 .hoodie文件
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,5 +4,5 @@
|
|||||||
| 文章 | 地址| 备注|
|
| 文章 | 地址| 备注|
|
||||||
|----|----|----|
|
|----|----|----|
|
||||||
| hudi-resources | https://github.com/zeekling/hudi-resources | 汇总Apache Hudi相关资料 |
|
| hudi-resources | https://github.com/zeekling/hudi-resources | 汇总Apache Hudi相关资料 |
|
||||||
|
| 官网 | https://hudi.apache.org/cn/docs/0.13.0/overview | 中文官网|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user