diff --git a/README.md b/README.md index 7b74c57..2f9eba3 100644 --- a/README.md +++ b/README.md @@ -58,12 +58,11 @@ * [案例](#案例) * [丢主键为xxx的某条数据](#丢主键为xxx的某条数据) * [xxx表的数据没有到最新](#xxx表的数据没有到最新) -* [模块](#模块) +* [开发](#开发) * [Hudi 运行代码](#hudi-运行代码) * [sync](#sync) * [运维服务](#运维服务) * [部署工具](#部署工具) -* [开发](#开发) # 概述 @@ -777,15 +776,53 @@ _有时候Pulsar查询可能会有一点问题,导致整个任务失败,建 ## HDFS +由于运维工具的与实时配置库深度绑定,有时候针对临时环境、备份hudi表、测试环境等,没有运维工具辅助,可以直接查看hudi表实际结构来做简单的运维判断,这一节内容介绍一些和hudi表有关的结构,辅助做一些简单的运维判断。 + +一个完整的hudi表有以下部分构成: + +``` +dws_acct_item_gz + ├── .hoodie + │ ├── .aux + │ ├── .schema + │ ├── .temp + │ ├── 19700101000000001.deltacommit + │ ├── 19700101000000001.deltacommit.inflight + │ ├── 19700101000000001.deltacommit.requested + │ ├── 20240312151719746.deltacommit + │ ├── 20240312151719746.deltacommit.inflight + │ ├── 20240312151719746.deltacommit.requested + │ ├── 20240312153252615.commit + │ ├── 20240312153252615.compaction.inflight + │ ├── 20240312153252615.compaction.requested + │ ├── archived + │ └── hoodie.properties + └── 200 + ├── .00000911-5f8f-4a72-9687-d78a0ec7ec5f_19700101000000001.log.1_71-200-0 + ├── .00000911-5f8f-4a72-9687-d78a0ec7ec5f_20240312153252615.log.1_71-200-0 + └── 00000911-5f8f-4a72-9687-d78a0ec7ec5f_4-10-0_19700101000000001.parquet +``` + +其中,`.hoodie`文件夹通常被称为「时间线」,记录了hudi表的各种操作时间点、顺序和操作内容,`requested`结尾的时间线文件为**操作请求 +**,表示一个操作的开始,文件内容往往为将要操作的内容;`inflight`结尾的时间线文件为**操作进行中标志**,意思是这个操作正在进行中;没有结尾的文件为 +**操作完成标志**,表示这个操作已经完成,文件内容往往为一些操作结果,特别的,压缩操作的完成标志,结尾为`commit`。 + +时间线可以帮助运维人员了解hudi表的操作的详细时间点,当压缩或者同步出现问题的时候,往往会体现在时间线上,时间线的操作类型还有很多,可以在源码中了解。 + +分区文件夹中,存放的是hudi表的实际数据,其中文件命中带有`log`的文件为增量文件,也称为日志文件,存放的是checkpoint之间写入磁盘的增量数据;经过压缩操作之后,增量数据就会被整合成为`parquet` +结尾的数据文件;类似`5f8f-4a72-9687-d78a0ec7ec5f`这样的字符串被称为`file_id` +,通常一个file_id会对应多个日志文件和一个数据文件;类似`19700101000000001`和`20240312153252615` +这样的字符串被称为「时间点」,和时间线上的操作对应,多个时间点对应的文件会同时存在,这是hudi配置里定义的保留文件版本,用于hudi错误回退。 + ## 案例 ### 丢主键为xxx的某条数据 ### xxx表的数据没有到最新 -# 模块 +# 开发 -模块主要分为三部分,包含 Hudi 运行代码、运维服务和部署工具。 +主要分为三部分,包含 Hudi 运行代码、运维服务和部署工具。 ## Hudi 运行代码 @@ -796,5 +833,3 @@ sync 模块包含 Hudi 运行的全部业务逻辑,Hudi on flink 的运行模 ## 运维服务 ## 部署工具 - -# 开发