[设计] Doris血缘解析流程 您所在的位置:网站首页 数据中台流程图 [设计] Doris血缘解析流程

[设计] Doris血缘解析流程

2022-12-21 04:19| 来源: 网络整理| 查看: 265

一、背景 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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有