[设计] Doris血缘解析流程
一、背景
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
[设计] Doris血缘解析流程相关推荐
- sketch 将动图转换为json_开源 | Picasso:sketch设计稿智能解析工具
开源二期项目专题系列(一) 1. 开源项目名称:Picasso 2. github地址: https://github.com/wuba/Picasso 3. 简介:Picasso是58同城推出的一款 ...
- 视频教程-热更新框架设计之热更流程与热补丁视频课程-Unity3D
热更新框架设计之热更流程与热补丁视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件架构设 ...
- HTML页面加载和解析流程详细介绍
浏览器加载和渲染html的顺序.如何加快HTML页面加载速度.HTML页面加载和解析流程等等,在本文将为大家详细介绍下,感兴趣的朋友不要错过 浏览器加载和渲染html的顺序 1. IE下载的顺序是从上 ...
- linux优化网页加载过程,HTML页面加载和解析流程 介绍
1.浏览器加载和渲染html的顺序 1.1.IE下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的. 1.2.在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相 ...
- Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析
转自:http://www.uml.org.cn/mobiledev/201211221.asp 今天,我着重讲解下如下三个内容: measure过程 WRAP_CONTENT.MATCH_PAREN ...
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文 ...
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
在之前一篇博文中<< Android中View绘制流程以及invalidate()等相关方法分析>> ,简单的阐述 了 Android View 绘制流程的三个步骤,即: 1. ...
- html中加载解析,HTML页面加载和解析流程详细介绍
序言: 我一直都认为"网页制作"这个词是一个不怎么高端的词,在我的印象中网页制作的词是没有生命力的一个制作,我喜欢用HTML 这样简单直接,这词凸显高端,有大气漂亮的UI.一套完美 ...
- python进阶项目设计_推荐系统进阶:设计和构建推荐系统流程综述(1)
内容目录推荐系统应用场景概述 为什么需要推荐? 推荐系统的目标? 推荐系统的工作? 推荐系统的基本模型 构建推荐系统的方法 相关参考? 1.推荐系统概述以及它们如何提供有效形式的定向营销 推荐系统 推 ...
最新文章
- 微型计算机的EMC设计视频,干货 | EMC设计有多难,看完这31个电磁兼容标准电路,瞬间懂了...
- [Tomcat]Tomcat6和Tomcat7的区别
- 交换排序之——快速排序(c/c++)
- php数组全排列,元素所有组合
- SAP 电商云 Spartacus UI 模块延迟加载的入口程序
- activiti异步执行_对基于消息队列的Activiti异步执行器进行基准测试
- 砂.随笔.二十.微笑
- 潭州课堂25班:Ph201805201 爬虫基础 第九课 图像处理- PIL (课堂笔记)
- java 先入先出,java_阻塞队列(FIFO先进先出)
- Cookie与Session相关学习笔记
- 使用Ant编译Hadoop eclipse插件
- What’s the difference between system.web and system.webServer?
- 中止执行后超过2年_债权人申请强制执行满2年后怎么办?
- unity 获取预制体_Unity实战之道具系统
- 用 java 安装 mockserver,Mock Server实践
- win10重装系统后Mysql环境和数据的恢复(无需重装Mysql)
- 区块链打击食品欺诈:以挪威三文鱼为例
- ios服务器停止响应怎么办,iPhone 应用停止响应或意外关闭怎么办
- 2022-2028全球军用弩行业调研及趋势分析报告
- 概率论与数理统计:随机变量、分布律,分布函数,密度函数
热门文章
- 使用达思SQL数据库修复软件导出数据库时的接收数据的数据库如何清空表数据?...
- 老猿学5G扫盲贴:中国移动网络侧CHF的功能分解说明
- Web 面试之 JavaScript
- IBM笔记本驱动安装顺序
- CPU使用率不高,内存怎么使用率也不高,但系统假死了
- 信管/资管/博易大师软件源码+通达信配资/外汇模拟
- Mac系统如何利用CrossOver安装EXE格式软件
- 【第3版emWin教程】第3章 emWin介绍
- ibm tivoli_将IBM Tivoli Directory Integrator密码同步器与Tivoli Identity Manager集成
- XQuartz2.7.7 For Mac Download 实现在MAC平台执行exe文件