[设计] Doris血缘解析流程

一、背景

1.1 元数据概述

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

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

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

1.2 血缘构建方案调研

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

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

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

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

表1 数据血缘解析方案

关于doris的血缘方案的调研

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

1.3 凌久中台元数据现状

参考资源:

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

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值