一、背景

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血缘解析流程相关推荐

  1. sketch 将动图转换为json_开源 | Picasso:sketch设计稿智能解析工具

    开源二期项目专题系列(一) 1. 开源项目名称:Picasso 2. github地址: https://github.com/wuba/Picasso 3. 简介:Picasso是58同城推出的一款 ...

  2. 视频教程-热更新框架设计之热更流程与热补丁视频课程-Unity3D

    热更新框架设计之热更流程与热补丁视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件架构设 ...

  3. HTML页面加载和解析流程详细介绍

    浏览器加载和渲染html的顺序.如何加快HTML页面加载速度.HTML页面加载和解析流程等等,在本文将为大家详细介绍下,感兴趣的朋友不要错过 浏览器加载和渲染html的顺序 1. IE下载的顺序是从上 ...

  4. linux优化网页加载过程,HTML页面加载和解析流程 介绍

    1.浏览器加载和渲染html的顺序 1.1.IE下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的. 1.2.在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相 ...

  5. Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析

    转自:http://www.uml.org.cn/mobiledev/201211221.asp 今天,我着重讲解下如下三个内容: measure过程 WRAP_CONTENT.MATCH_PAREN ...

  6. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)

       本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文 ...

  7. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)

    在之前一篇博文中<< Android中View绘制流程以及invalidate()等相关方法分析>> ,简单的阐述 了 Android View 绘制流程的三个步骤,即: 1. ...

  8. html中加载解析,HTML页面加载和解析流程详细介绍

    序言: 我一直都认为"网页制作"这个词是一个不怎么高端的词,在我的印象中网页制作的词是没有生命力的一个制作,我喜欢用HTML 这样简单直接,这词凸显高端,有大气漂亮的UI.一套完美 ...

  9. python进阶项目设计_推荐系统进阶:设计和构建推荐系统流程综述(1)

    内容目录推荐系统应用场景概述 为什么需要推荐? 推荐系统的目标? 推荐系统的工作? 推荐系统的基本模型 构建推荐系统的方法 相关参考? 1.推荐系统概述以及它们如何提供有效形式的定向营销 推荐系统 推 ...

最新文章

  1. 微型计算机的EMC设计视频,干货 | EMC设计有多难,看完这31个电磁兼容标准电路,瞬间懂了...
  2. [Tomcat]Tomcat6和Tomcat7的区别
  3. 交换排序之——快速排序(c/c++)
  4. php数组全排列,元素所有组合
  5. SAP 电商云 Spartacus UI 模块延迟加载的入口程序
  6. activiti异步执行_对基于消息队列的Activiti异步执行器进行基准测试
  7. 砂.随笔.二十.微笑
  8. 潭州课堂25班:Ph201805201 爬虫基础 第九课 图像处理- PIL (课堂笔记)
  9. java 先入先出,java_阻塞队列(FIFO先进先出)
  10. Cookie与Session相关学习笔记
  11. 使用Ant编译Hadoop eclipse插件
  12. What’s the difference between system.web and system.webServer?
  13. 中止执行后超过2年_债权人申请强制执行满2年后怎么办?
  14. unity 获取预制体_Unity实战之道具系统
  15. 用 java 安装 mockserver,Mock Server实践
  16. win10重装系统后Mysql环境和数据的恢复(无需重装Mysql)
  17. 区块链打击食品欺诈:以挪威三文鱼为例
  18. ios服务器停止响应怎么办,iPhone 应用停止响应或意外关闭怎么办
  19. 2022-2028全球军用弩行业调研及趋势分析报告
  20. 概率论与数理统计:随机变量、分布律,分布函数,密度函数

热门文章

  1. 使用达思SQL数据库修复软件导出数据库时的接收数据的数据库如何清空表数据?...
  2. 老猿学5G扫盲贴:中国移动网络侧CHF的功能分解说明
  3. Web 面试之 JavaScript
  4. IBM笔记本驱动安装顺序
  5. CPU使用率不高,内存怎么使用率也不高,但系统假死了
  6. 信管/资管/博易大师软件源码+通达信配资/外汇模拟
  7. Mac系统如何利用CrossOver安装EXE格式软件
  8. 【第3版emWin教程】第3章 emWin介绍
  9. ibm tivoli_将IBM Tivoli Directory Integrator密码同步器与Tivoli Identity Manager集成
  10. XQuartz2.7.7 For Mac Download 实现在MAC平台执行exe文件