算法 自动采集列表(什么是全链路数据血缘(DataLineage)(AST))
优采云 发布时间: 2022-04-05 11:07算法 自动采集列表(什么是全链路数据血缘(DataLineage)(AST))
1 什么是全链路数据沿袭
根据维基百科,数据沿袭也称为数据来源或数据谱系。它通常被定义为一个生命周期,主要包括数据来自哪里以及随着时间的推移而移动到哪里。
数据血脉是数据资产的重要组成部分。用于分析表和字段从数据源到当前表的血统路径,血统字段之间的关系是否满足,注意数据的一致性和合理的表设计。它描述了数据从采集、生产到服务全链路的变化和存在形式。
全链路数据血统是指在数据的整个生命周期中,数据与数据之间形成的各种关系,贯穿整个数据链路,如图1所示。
图1 全链路数据沿袭
2 血缘关系建设方案研究2.1 血缘关系分析
目前,数据沿袭主要是通过解析SQL语句来发现上下游调用栈等信息。主流解决方案可以分为两种:
• 运行时解析,即在任务运行时通过钩子接口或*敏*感*词*器接口解析SQL生成的逻辑技术树(AST)。
• 先采集再解析,即通过采集程序将各个计算引擎的SQL统一到采集到mq中进行血液分析。
上述两类方案各有优缺点,对比见表1。
表1 数据沿袭分析方案
方案名称
优势
缺点
运行时解析
解析出来的血脉信息准确,语法错误的SQL和任务不会被解析。
每个计算引擎都需要开发一套血缘关系分析模块,成本高,可能影响任务。
先采集再解析
对于不同的 SQL 方言,可以使用同一套词法/句法解析器进行解析和沿袭解析。
较长的链接可能会导致不准确的血统结果。
2.2 血脉储藏室
与传统的关系型数据库和 ES 工具相比,图数据库在血统信息的查询和分析方*敏*感*词*有以下优势:
1、更好地存储和分析复杂关系
数据沿袭描绘了数据的完整生命周期,具有数据链路长的特点。传统的关系型数据库和ES等,往往只反映当前状态或短路径中的状态,在长链接血缘关系的检索上存在明显劣势。图数据库有效组织复杂关系,通过点-边结构将血脉上下游完美连接,从而实现更长链路血脉的存储、检索和分析。
2、可以有效利用数据之间的相关性,实现更准确可靠的决策
图结构的特点对业务具有重要的指导意义。例如,图的密度可以反映业务数据关联的紧密程度,有助于识别高I/O或高吞吐的服务,识别链路瓶颈;图数据之间的共现可以反映血缘关系中的共生关系,辅助血缘关系重要性的划分;图形可视化帮助业务人员更清晰地了解血缘动态。
与开源图数据库 Neo4j 和 Nebula Graph 相比,华为云 GES 具有以下优势:
• 基于分布式内存计算,性能更高、速度更快、响应时间更短
• 集成 30+ 种高性能算法,增强图形分析能力
• 对接华为云大数据和AI服务,周边支持更全面,服务对接更便捷
• 基于实践自主研发的查询算子Path-Query,支持复杂的过滤查询条件,具有更好的查询性能
华为云GES的基准数据如表2所示。
表2 华为云GES基准测试数据
增加
新节点
15000 TPS
添加边缘
10000 TPS
查询
查询节点详情
20000 TPS
查询边详细信息
10000 TPS
*敏*感*词*
批量导入数据速率
600,000 边/秒
从备份恢复数据速率
600 万边/秒
遍历
1-hop 查询响应时间
第二
2-hop 查询响应时间
第二
三跳查询响应时间
1~3秒
6 跳查询响应时间
5秒
算法
页面排名算法
每次迭代 4 秒
WCC算法
20 秒
SSSP算法
20 秒
3 满帮数据血脉的实践3.1 满帮数据血脉的特点
满帮数据血脉具有以下特点:
• 采集 广泛的覆盖范围。目前已经覆盖了大部分离线和实时场景,涉及的组件包括hive、spark、impala、flink、doris、kafka、clickhouse等。
• 多层次的亲属关系。根据血缘关系模型和血缘关系数据,形成域与域、域与表、表与表、库与库、任务与任务等血缘关系,应用于不同场景。
• 丰富的应用场景。已应用于数据治理、数据质量、数据安全、应用告警等多种场景。
• 开放血统界面。目前,基于血缘关系服务平台,对外提供了丰富的血缘关系接口,包括基本血缘关系信息查询和基于各种算法的血缘关系路径查询。
3.2 数据沿袭模型
定义丰富的血缘关系模型有助于更真实有效地展示血缘关系。满族血统模型主要包括实体和关系,其中实体主要涵盖任务、库、表、视图、字段、函数等实体。实体和关系的组合显示了从一个表/列到其他表/列的沿袭,包括表 INSERT INTO\CTAS 之间的依赖关系,字段 PROJECTION\PREDICATE 之间的依赖关系。
使用完整的数据血缘关系模型可以展示血缘关系的全貌,但存在以下问题:一是完整的血缘关系模型往往收录数千个实体血缘关系,在前端难以展示;其次,过多的冗余信息可能导致问题实体定位困难。为了解决以上问题,满帮在数据血缘模型的基础上,开发了多层次血缘关系模型,主要包括完整血缘关系模型和高层次血缘关系模型。完整数据沿袭模型是所有其他高级沿袭模型的基础,高级沿袭模型通过省略或聚合模型中的某些关系和实体来扩展完整沿袭。在实际业务中,
3.3 整体架构方案
满帮全链路数据血脉实现了血脉数据数据采集从开始到最终数据服务的全链路,有助于高效定位问题,快速评估影响。全链路血脉架构如图2所示,主要包括5层:
• 血脉采集层:负责采集满帮大数据平台各组件的任务血脉信息,将血脉解析成统一格式;
• 血脉处理层:通过消息队列Kafka,通过实时任务将血脉信息统一处理写入GES和Hive,提供血脉存储接口和血脉管理功能;
• 血缘存储层:分别通过GES和Hive提供血缘信息存储和血缘分析统计功能;
• 血统接口层:提供血统信息功能接口,连接血统应用服务;
• 血脉应用层:提供血脉服务,包括数据资产、数据治理、数据安全等。
图2 满帮全链路血脉架构
3.3.1层血脉采集层
满帮血脉采集层目前涵盖满帮内部数据、离线调度、实时计算等平台上的SQL任务和Spark\Flink任务。血缘关系包括系统血缘关系、职务血缘关系、图书馆血缘关系、表级血缘关系、字段血缘关系,指向数据的上游源头,溯源上游。通过血缘关系,清晰展现数据处理的逻辑脉络,快速定位异常数据域的影响范围,准确勾画数据回溯的最小范围,降低理解数据和解决数据问题的成本. 具体来说:
• Hive SQL lineage 解析主要是指通过Hive hook 函数解析org.apache.hadoop.hive.ql.hooks.LineageLogger。
• Spark SQL通过QueryExecutionListener的onSuccess方法获取逻辑计划的Output,通过Output解析字段血缘关系。
• Flink SQL 通过 Cava cc 获取 SQL 逻辑计划树(AST),通过遍历 AST 获取并执行 Input\Output,从而分析表和字段之间的关系。
• Spark\Flink 任务通过分析DAG 中的关系,找到Input\Output,构建虚拟输入输出表,构建血缘关系。
• Impala 目前使用filebeat采集 血脉日志将血脉信息异步发送到Kafka。
为了方便采集和数据血统的处理,统一了各个组件的血统格式,主要包括输入输出表、字段等信息。
序列号
字段名称
字段类型
描述
1
数据库
细绳
当前数据库
2
期间
长
血统分析时间
3
引擎名称
细绳
执行引擎名称
4
执行平台
细绳
执行的平台名称
5
哈希
细绳
执行 SQL MD5 值
6
工作 ID
细绳
执行Job的Id进行拼接
7
职位名称
细绳
任务名称
8
傲慢的
细绳
任务执行OA用户
9
查询文本
细绳
执行 SQL 语句
10
更新时间
长
血脉更新时间
11
用户
细绳
任务执行账户
12
版本
细绳
血统分析版
13
表血统
JSON 对象
表级血统信息
14
列沿袭
JSON 对象
场级血统信息
3.3.2 血脉处理层
血缘处理层主要由血缘实时处理模块、血缘存储接口模块、血缘管理模块组成。
为了满足近实时血脉查询的需求,满帮采用Flink作为血脉实时处理模块的核心组件。通过对从上游采集接收到的血脉信息进行实时分析处理,快速写入图数据库和Hive。该模块支持批量删除\查询\更新和模糊删除\查询\更新功能。
血脉存储接口模块主要开发快速编写图数据库和Hive的相关接口。
血缘管理模块主要用于血缘信息的维护管理和统计分析。
3.3.3血脉储存层
血脉存储层使用华为云图引擎GES服务作为存储引擎。GES采用华为自研EYWA内核,是一种基于“关系”的“图”结构化数据查询分析服务。GES 目前提供多种原生接口,包括批量读写点、边,以及各种路径查询算法。
全链路全链路数据沿袭场景下,图数据操作主要包括读写操作。写入操作主要是将解析和格式化后的血线数据实时写入图数据库。另一种写操作主要是向应用端提供写请求,如表\字段安全级别标记。读取操作主要来自自满帮内部的各种应用场景,主要涵盖短距离、CRM、客服、金融等。
3.3.4 血脉接口层和血脉应用层
血缘接口层主要连接血缘应用层的各种服务,通过开放血缘RPC接口,为各个应用服务提供丰富的接口选项。
目前,满族血脉信息主要应用于数据资产、数据治理、数据安全、数据质量等各种场景。
1、数据资产
满帮数据资产管理平台提供资产全景、数据地图、数据质量、数据安全等功能,如图4所示。数据地图支持以扇形图的形式直观展示各类数据资产的占比,图表,并通过不同层次的图形进行精细化控制,满足业务中不同应用场景的数据查询和辅助分析需求。
图 4 满帮数据资产管理平台
数据图还支持显示血统信息,分析任务之间的数据流向,如图5所示。目前数据图支持显示任务、库、表、字段级血缘关系。
图5 满帮资料图
2、数据治理
数据治理是指在数据的整个生命周期内管理数据的原则性方法,其目标是确保数据安全、及时、准确、可用和易于使用。满帮数据治理主要围绕“指标明确、质量规范”和“资源合理、节约严格”的原则进行。
如图6所示,满帮数据治理任务对库、表、字段的血脉信息进行分析,从价值密度、访问频率、使用方式、时效度等维度进行评价,从而对数据的流行度进行评分,热数据和热数据。,冷数据和冰数据。通过血缘信息查看离线数仓中某个任务链路的上下游任务依赖,同时分析链路上表的冷热使用情况,对ods和dwd的相关任务和SQL进行优化,trim和merge低价值表,缩短数据流ETL环节,从而降低维护成本,提高数据价值。
图 6 满帮数据治理
3、数据质量
数据质量旨在高效监控各类作业的运行状态,洞察关键信息,形成事前判断、事中监控、事后跟踪的闭环质量管理流程。在满帮数据质量监管平台建设中,面临以下问题:
• 离线实时监控系统不完善,监控存在盲点
• 整个链路的数据质量难以保证,数据不可信
• 数据依赖复杂,链接深,数据输出容易延迟
针对以上问题,满帮基于全链路数据血统,从以下几个方面提升数据全生命周期的数据质量:
• 主动通知交通数据所有者。根据血缘关系,通知依赖调度的任务,并提供多层通知选项,避免过渡干扰。
• 离线ETL链接,如果ods\dwd层的某个表的key字段被修改,将通过血脉信息自动向下游依赖表和任务负责人发送告警
• 对于实时的 Flink 任务,如果源端的 Kafka 字段结构发生变化,会根据血缘关系自动通知下游的依赖表和任务负责人
4、数据安全
随着国家在数据流通过程中对数据安全的重视程度越来越高,如果不能有效识别安全级别高的数据,可能会出现安全合规风险。为此,满帮推出了资产安全打标平台,支持通过“自动+人工”打标实现资产安全分级打标,但存在打标覆盖率低、准确率低等问题。
基于全链路的血缘关系,根据不同的数据安全等级,先用血缘关系标注接口标注不同的表字段,然后识别标注字段的上下游血缘关系,然后自动标注安全等级。如图7所示,city_name字段通过血统标记平台安全标记,等级为L3。根据血脉关系,对下游血脉链路的字段进行自动染色和标记,实现自动“染色”。
图 7 数据安全
4 未来展望
经过探索和实践,满帮已经基本实现了基于图数据库相关技术的全链路数据血统的构建,并取得了一定的成果。未来,我们将在以下几个方面进行更深入的探索,进一步完善我们的业务:
1、目前bloodline采集主要通过SQL、自动任务解析、人工排序等方式来提高bloodline覆盖率。目前覆盖率已达到95%以上。未来将探索人工智能相关的方法,根据数据集之间的依赖关系计算数据相似度,以提高覆盖率。
2、Impala bloodline采集 方法链接长,依赖Filebeat。未来我们会逐步对接使用SQL语法解析AST的方案,实现解析规范化。
3、目前血缘维度不支持功能层。
4、开发全链路血脉开放平台,快速对接应用方,为应用方提供血脉服务。
5 参考文献
[1]
[2]
[3]