[设计] Doris血缘解析流程

news2024/11/18 4:11:36

一、背景

1.1 元数据概述

元数据是凌久中台重要功能模块,是数据治理的重要一环,元数据治理是一切数据治理的基础,主要分为元数据管理和表血缘管理;

       元数据管理主要用来做数据地图、数据资产等;

       血缘治理主要用来追查问题数据上游表来源,以及分析当前表的对下游标影响扩散分析;

1.2 血缘构建方案调研

当前,数据血缘大多是对SQL语句进行解析,以发现上下游调用栈等信息。主流方案可分为两种:

  • 运行时解析,即在任务运行时通过hook接口或者listener接口对SQL生成的逻辑技术树(AST)进行解析。

  • 先采集后解析,即通过采集程序把各个计算引擎的SQL统一采集到mq进行血缘解析。

上述两类方案各有优劣,其对比如表1所示。

表1 数据血缘解析方案

关于doris的血缘方案的调研

  • Apache Doris 在橙联的应用实践:数仓架构全面革新,千万数据计算时间从 2 小时变成 3 分钟

  • 基于Apache doris的元数据管理系统

  • 基于Apache doris怎么构建数据中台(二)-数据中台建设内容

  • 小米数据管理与应用实践

  • github上关于doris的血缘采集方案:https://github.com/DLuPan/DorisParser  该方案的功能代码很不完整,无法使用;

鉴于时间成本投入、市场主流方案两个方面考虑,选择使用“先采集后解析”的技术方案。具体来说就是使用自定义程序,解析doris输出的sql审计日志,并输出存储formTable和toTable类似的血缘关系结果,最后交给apache atlas构建血缘关系图并展示;

1.3 凌久中台元数据现状

参考资源:

  • 元数据模块源码所在:http://gitlab.software.dc/mp-data/metadata

  • 中台元数据操作:http://172.18.8.203:21101/app-metadata/metadataManagement/lists

  • doris血缘调研 by 范俊甫 :doris血缘预研 · 语雀

  • doris官网审计日志:审计日志插件 - Apache Doris

1.3.1 凌久中台元数据整体架构图

二、Doris血缘解析

2.1 Doris元数据管理流程图

2.2 设计步骤

第一步:开启doris的审计日志

开启doris审计日志功能开关之后,doris会会将所有的doris的sql语句全部实时输出到对应的一个审计日志文件中;

第二部:AnalyseLineageApp自定义应用采集doris审计日志,并按按照特定格式输出到sql_log表

AnalyseLineageApp为自定义doris审计日志实时采集,然后程序对sql进行血缘解析,形成来源formTable、目的toTable形成的sql_log表中;例如如下

第三步:powerjob-metadata-node读取doris元数据写入atlas服务

powerjob-metadata-node程序,定时批量读取第三步中的读取技术元数据和血缘数据,然后经过自身处理调用atlas的客户端之后写入atlas自身的存储系统中(此处为hbase、solr中)

第四步:metadata_manager启动atlas server服务

第四步的atlas server服务要先于第三步启动,这样才能保证第三步顺利写入atlas服务;

第五步:数据中台前端添加支持doris采集器

修改metadata_manager(本质是atlas server服务),

2.3 中台落地过程

如何在凌久数据中台中执行doris的元数据和血缘的采集管理?

第一步:元数据的采集准备

      在"凌久数字中台" -> "元数据"-> "数据源管理",添加需要采的数据源集的元数据链接配置信息,需要特别注意:如果添加的是新的rodis集群地址(例如jdbc:mysql://127.0.0.1:9030/my_database地址中,其中,127.0.0.1:9030是新的doris集群地址),则需要首先在新的doris集群中开启审计日志,并配置filebeat应用采集doris集群的审计日志;其次是需要在新doris集群中,创建doris的sql_log表,用来存储doris的血缘原始数据;

其中2.2中第二步的sql_log血缘数据表,表结构如下,需要事先创建对应的表


CREATE TABLE `sql_log` (
  `create_time` datetime NULL COMMENT "创建时间",
  `db_name` varchar(255) NULL COMMENT "数据库名称",
  `table_name` varchar(255) NULL COMMENT "表名",
  `sql_info` varchar(8000) NULL COMMENT "SQL语句",
  `from_table` varchar(255) NULL COMMENT "来源表"
) ENGINE=OLAP
DUPLICATE KEY(`create_time`, `db_name`, `table_name`)
COMMENT "doris血缘数据表"
PARTITION BY RANGE(`create_time`)
(
PARTITION p20221122 VALUES [('2022-11-22 00:00:00'), ('2022-11-23 00:00:00')),
PARTITION p20221123 VALUES [('2022-11-23 00:00:00'), ('2022-11-24 00:00:00')),
PARTITION p20221124 VALUES [('2022-11-24 00:00:00'), ('2022-11-25 00:00:00')),
PARTITION p20221125 VALUES [('2022-11-25 00:00:00'), ('2022-11-26 00:00:00')))
DISTRIBUTED BY HASH(`db_name`, `table_name`) BUCKETS 5
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.time_zone" = "Asia/Shanghai",
"dynamic_partition.start" = "-30",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.replication_allocation" = "tag.location.default: 1",
"dynamic_partition.buckets" = "1",
"dynamic_partition.create_history_partition" = "false",
"dynamic_partition.history_partition_num" = "-1",
"dynamic_partition.hot_partition_num" = "0",
"dynamic_partition.reserved_history_periods" = "NULL",
"in_memory" = "false",
"storage_format" = "V2"
);

第二步:启动元数据采集任务

在"凌久数字中台" -> "元数据"-> "采集任务"中,启动采集任务,此时凌久中台开始了采集doris血缘的任务

第三步:  查看采集效果

在"凌久数字中台" -> "元数据"-> "元数据管理"中,查看采集的元数据效果

三、总结

工业能管中的doris血缘效果图

举例中的某一个张表

Doirs血缘地址:

http://172.18.8.203:21000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫-(5)

内容概览 scrapy架构介绍scrapy解析数据settings相关配置持久化方案爬取全站文章爬虫中间件与下载中间件 scrapy架构介绍 # 引擎(ENGINE) 引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。有关详细信息,请参见上面的数据流部分。# …

SLURM批处理调度系统介绍

SLURM (Simple Linux Utility for Resouce Management) 非常成熟的开源社区集群批处理调度系统。 介绍 2008年左右起源于LLNL实验室, 最新版本20.11开源软件(约50万行c源码),开发和发布一直活跃用户群: Top10里有5家使用(天河HPC是其一)商业公司SchedMD提供顾问咨…

经典算法之LRU算法

一、理论 LRU算法算是个常见的算法,很有必要去了解它,现在我们就来看看什么是 LRU LRU 的全称是 Least Recently Used(最近最少使用),就如它的含义一样,最近最少使用的。在实际的场景中大多会把它当作一种…

CAN总线学习笔记 | STM32CubeMX配置CAN环回测试

CAN基础知识介绍文中介绍了CAN协议的基础知识,以及STM32F4芯片的CAN控制器相关知识,下面将通过实例,利用STM32CubeMX图形化配置工具,来实现CAN通讯的环回测试 一、STM32CubeMX配置 CAN是挂载在APB1总线上,设置PCLK1时…

Flink系列之Flink中四层Graph详解

title: Flink系列 四、Flink Runtime 四层 Graph 详解 首先回顾一下 Flink 的整体架构设计: {% asset_img processes.svg %} 关于上图中的一些概念的解释: 1、DataFlow Graph 是一个逻辑概念,表示这个应用程序的一个执行图,事…

开关电源环路笔记(11)-TL431电路的几个电阻的取值

上次文章发出来后,有兄弟留言布置了作业,让说说几个电阻的取值,就是下图的Rled,Rbias,R1,Rlower等。那么就写写吧,毕竟,这个电路确实用得非常多,实际工作中确实也需要知道…

登录信息记录模块实现(UserAgentUtils)

如果文章对你有帮助欢迎【关注❤️❤️❤️点赞👍👍👍收藏⭐⭐⭐】一键三连!一起努力! 一、UserAgentUtils简介 user-agent-utils 是一个用来解析 User-Agent 字符串的 Java 类库。 其能够识别的内容包括&#xff1a…

32_STM32内部温度传感器实验

目录 内部温度传感器简介 STM32ADC对应引脚 内部温度传感器使用注意使用事项 开启内部温度传感器步骤 实验源码 内部温度传感器简介 内部温度传感器框图 从图上可以看出温度传感器可通过TSVREFR控制位连接到ADC的固定通道16,温度的值最终肯定是被转换成电压值,电压值然后通…

学会python这十个语言技法,让你有上手风范

如何让你的代码更有python味? 大部分编程语言都有共性,也有个性。下手害怕个性,视为异端,抵触之;上手善用个性,欣欣然,妙用之。 1、三元表达式 别抱怨python没有三元表达式,请看&…

《大数据导论》之数据的概念、类型和组织形式

目录 说在前面 一、数据的概念 二、数据类型 ​三、数据组织形式 说在前面 大数据时代悄然来临,带来了整个信息技术发展的巨大变革,并深刻影响着社会生产和人们生活的方方面面。全球范围内,世界各国政府也非常重视整个大数据的研究和产业…

hadoop pig-0.17.0 安装配置

下载Apache Pig 首先,从以下网站下载最新版本的Apache Pig,下载Pig步骤取自W3C:Pig安装教程 步骤1 打开Apache Pig网站的主页。在News部分下,点击链接release page(释放),如下面的快照所示。 步…

解决git中出现的“bash syntax error near unexpected token ’(‘”错误

今天来分享一篇关于我在git使用过程中出现的一个错误。 错误信息: bash: syntax error near unexpected token (’ 翻译过来就是提示我在’(这里有错误,而这个错误是我在使用git commit提交时候产生的,我当时是这么写的: git c…

java中Optional的应用,以及map和flatMap的区别

关于Option的介绍可以看深入理解java8中的Optional 类就可以了,但是复杂一点的使用在网上却没有搜到,这里结合我开发时遇到的真实案例来讲一下Option的使用。 1.案例一 在真实业务操作过程中,都是对象里面套对象,这边先简单定义操…

flink window 框架详细解读

1. dataStream window group window time window 基于时间驱动 滚动时间窗口 tumble time window 滑动时间窗口 sliding time window 会话时间窗口 session time window count window 基于数据驱动 滚动计数窗口 tumble count window 滑动计数窗口 sliding count window 2. s…

皕杰报表之雷达图

雷达图(又可称为戴布拉图、螂蛛网图)是数据分析报表的一种。即将各项数据分析所得的数字或比率,就其比较重要的项目集中划在一个图表上,来表现一组数据的各项数据比率的情况,使用者能一目了然的了解这个数据的指标的变…

LeetCode中等题之通过最少操作次数使数组的和相等

题目 给你两个长度可能不等的整数数组 nums1 和 nums2 。两个数组中的所有值都在 1 到 6 之间(包含 1 和 6)。 每次操作中,你可以选择 任意 数组中的任意一个整数,将它变成 1 到 6 之间 任意 的值(包含 1 和 6&#…

计算机组成大题分析(三)

假定计算机 M 字长为 16 位,按字节编址,连接 CPU 和主存的系统总线中地址线为 20 位、数据线为 8位,采用 16 位定长指今字,指令格式及其说明如下: 其中,op1-op3 为操作码,rs,t 和 rd 为通用寄存…

【计算机视觉+CNN】keras+ResNet残差网络实现图像识别分类实战(附源码和数据集 超详细)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一、深度卷积神经网络模型结构 1:LeNet-5 LeNet-5卷积神经网络首先将输入图像进行了两次卷积与池化操作,然后是两次全连接层操作,最后使用Softmax分类器作为多分类输出,它对…

MySQL插入汉字报错的解决方案

MySQL插入汉字报错的原因是字符集的问题,MySQL默认使用的是Latin(拉丁文)字符集,可以在创建数据库时指定其字符集:CREATE DATABASE test DEFAULT CHARACTER SET utf8 或者修改MySQL的配置文件,可以参考以下…

Qt事件循环嵌套,BlockingQueuedConnection与QWaitCondition比较

前言: 之前写过有关事件循环和条件变量的博客: Qt使用事件循环,信号,stop变量,sleep阻塞,QWaitConditionQMutex条件变量,退出子线程工作_大橘的博客-CSDN博客_qt stop函数 Qt事件循环&#x…