From bad651b8a54a5410d084c4c1f8d8a3b546b39b7e Mon Sep 17 00:00:00 2001 From: v-zhangjc9 Date: Sun, 10 Mar 2024 21:59:33 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E8=A1=A5=E5=85=85hudi=20web=E8=BF=90?= =?UTF-8?q?=E7=BB=B4=E9=A1=B5=E9=9D=A2=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 155 ++++++++++++------ assets/hudi_web_offline_query.png | Bin 0 -> 14142 bytes assets/hudi_web_offline_query_latest_time.png | Bin 0 -> 5122 bytes assets/hudi_web_tools_stop_all.png | Bin 0 -> 7814 bytes assets/hudi_web_tools_submit_compaction.png | Bin 0 -> 11149 bytes ...hudi_web_tools_submit_compaction_batch.png | Bin 0 -> 4974 bytes assets/hudi_web_tools_timeline.png | Bin 0 -> 10019 bytes 7 files changed, 104 insertions(+), 51 deletions(-) create mode 100644 assets/hudi_web_offline_query.png create mode 100644 assets/hudi_web_offline_query_latest_time.png create mode 100644 assets/hudi_web_tools_stop_all.png create mode 100644 assets/hudi_web_tools_submit_compaction.png create mode 100644 assets/hudi_web_tools_submit_compaction_batch.png create mode 100644 assets/hudi_web_tools_timeline.png diff --git a/README.md b/README.md index 571976a..399e970 100644 --- a/README.md +++ b/README.md @@ -1,59 +1,60 @@ - * [概述](#概述) * [部署](#部署) - * [配置准备](#配置准备) - * [主机规划](#主机规划) - * [外部资源确认](#外部资源确认) - * [Hadoop配置](#hadoop配置) - * [外部组件部署](#外部组件部署) - * [Victoria Metrics](#victoria-metrics) - * [启动脚本](#启动脚本) - * [采集配置](#采集配置) - * [Loki](#loki) - * [配置文件](#配置文件) - * [Grafana](#grafana) - * [数据源配置](#数据源配置) - * [配置数据库](#配置数据库) - * [部署配置](#部署配置) - * [接口机目录规划](#接口机目录规划) - * [脚本生成](#脚本生成) - * [启动上传服务](#启动上传服务) - * [编译打包项目](#编译打包项目) + * [配置准备](#配置准备) + * [主机规划](#主机规划) + * [外部资源确认](#外部资源确认) + * [Hadoop配置](#hadoop配置) + * [外部组件部署](#外部组件部署) + * [Victoria Metrics](#victoria-metrics) + * [启动脚本](#启动脚本) + * [采集配置](#采集配置) + * [Loki](#loki) + * [配置文件](#配置文件) + * [Grafana](#grafana) + * [数据源配置](#数据源配置) + * [配置数据库](#配置数据库) + * [部署配置](#部署配置) + * [接口机目录规划](#接口机目录规划) + * [脚本生成](#脚本生成) + * [启动上传服务](#启动上传服务) + * [编译打包项目](#编译打包项目) * [运维](#运维) - * [命令行](#命令行) - * [Web](#web) - * [概览](#概览) - * [表任务](#表任务) - * [Flink任务详情](#flink任务详情) - * [表任务详情](#表任务详情) - * [同步情况](#同步情况) - * [压缩情况](#压缩情况) - * [历史压缩](#历史压缩) - * [时间线](#时间线) - * [Pulsar队列](#pulsar队列) - * [Hudi表结构](#hudi表结构) - * [压缩队列](#压缩队列) - * [跨天](#跨天) - * [同步集群](#同步集群) - * [压缩集群](#压缩集群) - * [Cloud](#cloud) - * [小工具](#小工具) - * [查询时间线](#查询时间线) - * [提交压缩任务](#提交压缩任务) - * [批量提交压缩任务](#批量提交压缩任务) - * [停止所有压缩任务](#停止所有压缩任务) - * [离线检索](#离线检索) - * [查询文件](#查询文件) - * [检索最后操作时间](#检索最后操作时间) - * [HDFS](#hdfs) + * [命令行](#命令行) + * [Web](#web) + * [概览](#概览) + * [表任务](#表任务) + * [Flink任务详情](#flink任务详情) + * [表任务详情](#表任务详情) + * [同步情况](#同步情况) + * [压缩情况](#压缩情况) + * [历史压缩](#历史压缩) + * [时间线](#时间线) + * [Pulsar队列](#pulsar队列) + * [Hudi表结构](#hudi表结构) + * [压缩队列](#压缩队列) + * [跨天](#跨天) + * [同步集群](#同步集群) + * [压缩集群](#压缩集群) + * [Cloud](#cloud) + * [小工具](#小工具) + * [查询时间线](#查询时间线) + * [提交压缩任务](#提交压缩任务) + * [批量提交压缩任务](#批量提交压缩任务) + * [停止所有压缩任务](#停止所有压缩任务) + * [离线检索](#离线检索) + * [查询记录](#查询记录) + * [检索最后操作时间](#检索最后操作时间) + * [HDFS](#hdfs) + * [案例](#案例) + * [丢主键为xxx的某条数据](#丢主键为xxx的某条数据) + * [xxx表的数据没有到最新](#xxx表的数据没有到最新) * [模块](#模块) - * [Hudi 运行代码](#hudi-运行代码) - * [sync](#sync) - * [运维服务](#运维服务) - * [部署工具](#部署工具) + * [Hudi 运行代码](#hudi-运行代码) + * [sync](#sync) + * [运维服务](#运维服务) + * [部署工具](#部署工具) * [开发](#开发) - # 概述 @@ -436,50 +437,102 @@ uploader ##### Pulsar队列 +用于查询Pulsar Topic的相关信息,查看Reader积压情况,生产者是否在线等。 + ![](assets/hudi_web_table_meta_detail_pulsar.png) ##### Hudi表结构 +常用于查看实际的表结构是否和配置表相同,判断hudi表有没有更新表结构。 + ![](assets/hudi_web_table_meta_detail_struct.png) ### 压缩队列 +查看各个压缩队列的任务详情,方便查找问题任务。 + ![](assets/hudi_web_queue.png) ### 跨天 +查看一些简单的跨天信息。 + ![](assets/hudi_web_version.png) ### 同步集群 +常用页面,用于监控同步集群中的同步任务的启停状态,Yarn页面不能自动刷新,状态显示不清晰,这个界面基本可以替代Yarn页面,页面默认筛选hudi同步任务,也可以方便跳转同步任务对应的Yarn页面和日志。 + ![](assets/hudi_web_sync.png) ### 压缩集群 +和「同步集群」页面功能一致,这个页面还能聚合各个集群在同一个表格中,方便同时查看多个集群内的压缩任务。 + ![](assets/hudi_web_compaction.png) ### Cloud +查看服务部署实时状态和方便跳转服务日志。 + ![](assets/hudi_web_cloud_service.png) ### 小工具 +提供一些实际运维过程中需要的小工具。 + #### 查询时间线 +根据指定的HDFS路径查询;常有一些情况需要查询备份目录下的hudi表情况,这些备份表不在配置体系里面,可以通过这个工具直接查看指定路径下的hudi表时间线、表结构。 + +![](assets/hudi_web_tools_timeline.png) + #### 提交压缩任务 +手动提交压缩任务,可以指定压缩任务执行的集群。 + +![](assets/hudi_web_tools_submit_compaction.png) + #### 批量提交压缩任务 +批量提交压缩任务,一行一个hudi表,使用空格分开`flink_job_id`和`alias`。 + +![](assets/hudi_web_tools_submit_compaction_batch.png) + #### 停止所有压缩任务 +停止压缩任务往往遍布各个集群,压缩任务又可能会存在各个压缩队列里,这个工具可以直接清除各个压缩队列里的任务、停止各个集群里正在运行的压缩任务。 + +![](assets/hudi_web_tools_stop_all.png) + ### 离线检索 -#### 查询文件 +使用Flink运行一些需要耗时较长的查询任务,和hudi同步任务一样,提交到Yarn集群上,可以做一些牛逼操作;查询结果在页面下方的任务列表中查看。 + +_提交Flink任务有一定的延时,尤其在调度压缩任务的时候,可能会由于资源不足导致提交失败,要观察一些,不要多次提交,避免消耗集群资源。_ + +#### 查询记录 + +可以查询包含指定字符串(通常是主键)的记录,横跨Pulsar、hudi日志、hudi数据,通常用于丢数据时,找到数据丢在哪一个环节,解析出记录的时间线; + +_有时候Pulsar查询可能会有一点问题,导致整个任务失败,建议Pulsar查询单独启动一个任务。_ + +![](assets/hudi_web_offline_query.png) #### 检索最后操作时间 +查询hudi表最后操作时间,逐条检索data文件的记录,这个时间应该会比较准确;通常用于想知道某个表的准确最新更新时间。 + +![](assets/hudi_web_offline_query_latest_time.png) + ## HDFS +## 案例 + +### 丢主键为xxx的某条数据 + +### xxx表的数据没有到最新 + # 模块 模块主要分为三部分,包含 Hudi 运行代码、运维服务和部署工具。 diff --git a/assets/hudi_web_offline_query.png b/assets/hudi_web_offline_query.png new file mode 100644 index 0000000000000000000000000000000000000000..fc7918acf959d5849d195dd843dcbd664e9efc64 GIT binary patch literal 14142 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 literal 0 HcmV?d00001 diff --git a/assets/hudi_web_offline_query_latest_time.png b/assets/hudi_web_offline_query_latest_time.png new file mode 100644 index 0000000000000000000000000000000000000000..51c1bf760408cb8d62b5ad7290eaf3fb8ac7cd8f GIT binary patch literal 5122 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 literal 0 HcmV?d00001 diff --git a/assets/hudi_web_tools_stop_all.png b/assets/hudi_web_tools_stop_all.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8b67cd3dbf90c69e6dbe219f7c53e5b1ce7fb2 GIT binary patch literal 7814 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 CQ}G4> literal 0 HcmV?d00001 diff --git a/assets/hudi_web_tools_submit_compaction_batch.png b/assets/hudi_web_tools_submit_compaction_batch.png new file mode 100644 index 0000000000000000000000000000000000000000..202dc1f045e59bc6263273c9778e46e85308a659 GIT binary patch literal 4974 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 MA}d_}L*M`Z090n$EdT%j literal 0 HcmV?d00001