睿治

智能数据治理平台

睿治作为国内功能最全的数据治理产品之一,入选IDC企业数据治理实施部署指南。同时,在IDC发布的《中国数据治理市场份额,2022》报告中,蝉联数据治理解决方案市场份额第一。

构建数据血缘的解决方案

时间:2023-12-12来源:天柒零浏览数:201

在当今信息爆炸的时代,企业面临着数据增长速度快、数据源复杂多样的挑战。为了确保数据的质量和可信度,构建数据血缘成为了一个重要的任务。数据血缘可以追溯数据的来源、操作和流向,帮助企业更好地理解数据的价值和风险。本文从数据血缘的用途、数据血缘的定义,以及数据血缘构建的方式以及开源框架几个方面说明数据血缘的相关内容。


01—数据血缘的用途‍‍‍‍‍

在数据驱动的企业环境中,数据血缘起到了关键作用。它不仅帮助企业了解数据是从何处来的,还可以追踪数据的操作和流向,提供更全面的数据上下文。这对于资产管理、数据开发、数据治理和安全领域等方面都至关重要。


一、资产管理

在资产领域,数据血缘的应用主要用于资产热度的计算。资产热度是指某个资产被频繁消费和广泛引用的程度,它可以作为资产权威性的证明。为了计算资产热度,在血缘平台中,我们引入了类似于网页排名算法PageRank的概念,通过分析资产的下游血缘依赖情况,为每个资产定义了一个热度值。较高的热度值代表着更值得信任和更可靠的数据资产。

此外,血缘还可以帮助我们理解数据。当用户在元数据平台或血缘平台上查询某个数据资产节点时,他们可能是为了进行下一步的作业开发或排查问题。然而,如果用户不了解数据产生的过程,就无法理解数据的过去和未来。因此,通过数据血缘,可以找到具体表的上下游信息,以帮助用户对数据进行更深入的理解。


二、数据开发

数据血缘在影响分析和归因分析数据开发中发挥着重要作用。

首先是影响分析应用,这是事前分析的过程。当对某张表资产进行变更时,上游的资产负责人需要通过血缘查看自己资产的下游,以判断这个变更的影响。他们可以根据对修改的兼容性或某条链路的重要性进行相应的通知操作,以避免由于缺少通知而导致严重的生产事故。

而归因分析应用则是事后分析。当某个任务产生的表出现问题时,我们可以通过查询血缘的上游逐级寻找到引发问题的根本原因。在定位问题之后,可以修复数据,并根据血缘查找任务或表的依赖关系。对于离线数仓等情况,可能需要重新运行受影响的输出数据分区,通过血缘的回溯仅限于相应受影响的下游任务,从而减少不必要的资源浪费。


三、数据治理

在治理领域中,血缘关系可以应用于链路状态追踪和数仓治理两个典型场景。

首先是链路状态追踪。当重要营销活动来临时,我们需要提前确定需要重点保障的任务,并通过血缘关系梳理出链路的核心部分。然后,我们可以针对这些核心链路进行重点治理和保障措施。

其次是数仓治理。在数仓建设过程中,血缘关系可以辅助日常工作,特别是在规范化治理方面。数仓的规范化治理包括清理分层不合理的引用关系,或者规范化整体数仓分层结构,尤其处理存在冗余表的情况。举个例子,如果两个表来自同一个上游表但位于不同层级,那么我们需要清理这些冗余表。这种场景下,血缘关系可以成为一个典型的辅助治理工具。

通过应用血缘关系,我们可以更好地理解数据的流动和影响,从而在治理过程中做出更准确的决策和优化措施。


注:

如果数仓中存在分层不合理的引用关系或冗余表,可能会导致以下问题:

1、数据重复和冗余:冗余表会导致数据在数仓中存在重复存储,占用额外的存储空间。这将增加数据维护的复杂性,并且可能导致数据不一致性的问题。

2、数据一致性问题:如果不同层级的表之间存在引用关系,但引用关系不合理,可能导致数据的一致性问题。例如,更新底层表时,上层表没有相应变化,导致数据不一致。

3、查询效率低下:冗余表会增加查询的复杂性,并且查询可能需要涉及多个表的联合操作。这将导致查询性能下降,同时增加查询的开销和难度。

4、数据流程混乱:分层不合理的引用关系会导致数据的流程变得混乱,不易于理解和管理。这将增加维护困难度,并降低数仓的可维护性和可扩展性。

为了解决这些问题,数仓治理通常需要对数据血缘进行分析,以追溯数据的来源和流向,识别冗余表和不合理的引用关系,并进行相应的清理和规范化操作。


四、数据安全

为了确保安全合规性,我们需要为每个资产定义相应的安全等级,并确保下游资产的安全等级高于上游资产的安全等级,以避免权限泄露或其他安全问题的出现。通过使用数据血缘,我们可以扫描到与这些规则相关的资产的下游,以配置相应的扫描规则,然后进行安全合规排查和治理。

此外,数据血缘还可以应用于标签传播方面。在为资产打上安全标签时,传统的人工方式既繁琐又需要关注链路信息。然而,通过利用数据血缘信息,我们可以实现自动化的标签打标过程。通过配置一些规则,我们可以确保安全标签在特定场景、节点和终止规则下明确传播,从而实现自动化的标记工作。这样可以大大减少手动工作量,并提高标签传播的准确性和效率。



02—数据血缘的定义‍‍‍‍‍

数据血缘是指数据之间的关系和来源信息。它记录了数据的产生、变化和传输过程,帮助我们了解数据的来源、流动路径和使用情况。

数据血缘可以以图谱的形式展示,通过节点和边表示数据对象和数据之间的关系。节点代表数据表、字段或文件,边表示数据之间的依赖关系、引用关系或转换关系。

数据血缘可以分为两种类型:逻辑血缘和物理血缘。逻辑血缘关注的是数据的逻辑关系,即数据表之间的依赖关系;物理血缘关注的是数据的物理存储和传输路径,即数据从源系统到目标系统的流动路径。我们这边主要关注的是逻辑血缘。


那么构成逻辑血缘在可视化上的主要定义为4种元素:‍‍‍‍

根据表现含义的不同,血缘关系的可视化图形包括4种可视化元素,分布在图形的不同位置。这些可视化元素包括:

1、资产节点:资产节点用来表现数据的所有者、数据层次信息或终端信息。它分为三种类型:主节点、数据流出节点和数据流入节点。主节点是可视化图形的核心节点,位于图形的中间。数据流入节点是主节点的父节点,表示数据的来源,位于图形的左侧。资产节点按照数据血缘的层级可以分为库级,表级,字段级,如果是库级则表示是数据库,表级则表示表,字段级则表示字段。

2、数据流转线路:数据流转线路表现的是数据的流转路径,从左到右流转。数据流转线路可以展示数据流动的方向、数据更新的量级和数据更新的频次。

3、任务节点-清洗规则节点:清洗规则节点用来表现数据流转过程中的筛选标准。在可视化图形上,清洗规则用一个标有大写字母"E"的圆圈表示,以保证图形的简洁和清晰。鼠标移动到清洗规则节点上,可以查看规则的具体内容。清洗规则节点一般是清洗任务的ETL任务节点。‍

4、任务节点-转换规则节点:转换规则节点类似于清洗规则节点,用一个标有大写字母"T"的圆圈表示。转换节点一般是转换任务的ETL节点。

这些元素共同构成了数据血缘的可视化图形,帮助我们更好地理解数据之间的关系和流动路径。


03—数据血缘的方案和开源框架

当前数据血缘的整体解决方案主要分为三步完成数据血缘的开发


一、定义数据血缘的数据结构‍

1)任务血缘数据结构,表示数据血缘种任务节点的数据结构

2)字段血缘数据结构,表示数据血缘种资产节点的数据结构

3)血缘关系图,定义任务节点和资产节点的关系结构图谱。‍‍


二、获取数据血缘信息存储到血缘数据库中

例如开源的数据血缘工具Atlas,

Atlas 通过插件(Hook)的方式 在服务段注入捕获代码,并将元数据提交至KafkaAtlas服务从Kafka中消费元数据信息,并将元数据写入到 JanusGraph(on HBase) 和 Solr 两个系统Atlas 通过其他应用通过RestAPI 方式向其他第三方服务提供元数据查询和检索的服务

同时Atlas 支持Flink引擎的Hook服务代码的注入。缺点是获取的数据血缘信息不全面。


三、使用前端框架展示数据血缘图前端框架采用开源的框架有sqlflow、jsplumb、效果图如下:‍jsplumb:

sqlflow:

如需特殊的血缘关系表达,如数据连线上展示数据更新的量级和数据更新的频次。点击某个资产,自动展示整个链条信息,连线粗细表达数据跟新的量级等前端效果需要特殊定制开发。


除了Apache Atlas 是 Apache 软件基金会的一个顶级开源项目以外还有另外一个项目LinkedIn DataHub项目,是由DataHub是由Linkedin开源的,也是数据血缘的开源框架,它采用基于推送的数据收集架构(当然也支持pull拉取的方式),能够持续收集变化的元数据。当前版本已经集成了大部分流行数据生态系统接入能力,另外还可以通过sqllineage 获取加工任务中的SQL代码,处理成血缘关系,存储到DataHub进行展示。‍‍‍


sqllineage 是一个用于解析 SQL 语句并提取其中的数据血缘信息的工具。它可以解析包括 Hive SQL、Spark SQL、Presto SQL 等在内的多种 SQL 方言,识别 SQL 语句中的表、列、函数、关键字等元素,并分析它们之间的关系,从而构建数据血缘。通过 sqllineage,用户可以获得 SQL 语句的逻辑血缘信息,即了解 SQL 语句中哪些表和列被使用,以及它们之间的数据流向。

DataHub支持的数据库类型如下:


另外一个数据血缘开源框架是Amundsen 是来自Lyft 开源的元数据管理、数据发现平台,功能点很全,有一个比较全的前端、后端以及数据处理框架。它有自己完整的元数据采集、存储、展示的整个框架,需要配合使用Apache Airflow作为数据生成器的编排引擎,从而获取到血缘关系。Amundsen的模块主要分为以下4种类型:

1. 元数据服务

元数据服务处理来自前端服务以及其他微服务的元数据请求。默认情况下,持久层是Neo4j,但可以替换。

2. 搜索服务

搜索服务由ElasticSearch提供支持,处理来自前端服务的搜索请求。默认情况下,由ElacticSearch提供搜索引擎,但可以替换。

3. 前端服务

前端服务托管Amundsen的网络应用程序。

4. 数据生成器

数据生成器是一个通用的数据提取框架,可从各种来源提取元数据。在Lyft,使用Apache Airflow作为数据生成器的编排引擎。每个数据生成器job都将是DAG(有向无环图)中的单个任务。每种类型的数据资源都将有一个单独的DAG,因为它可能必须以不同的时间运行。


Apache Atlas、DataHub和Amundsen是三个广泛使用的开源数据血缘和元数据管理工具。它们各自有不同的特点和优缺点。

1、Apache Atlas:

优点:

成熟稳定:Apache Atlas 是一款经过多年发展的成熟项目,有着稳定的功能和广泛的用户社区。

强大的血缘分析:Apache Atlas 提供了强大的血缘分析功能,可以跟踪数据在不同组件和系统之间的关系。

集成生态系统:Apache Atlas 可以与其他 Apache项目(如Ranger,Hadoop等)以及其他第三方工具集成,具有广泛的生态系统。

缺点:

复杂性:Apache Atlas 作为一个功能强大的企业级元数据管理工具,它的配置和使用可能较为复杂。

缺乏实时支持:Apache Atlas 并不擅长处理实时数据,对于需要实时血缘跟踪的场景可能不能提供最佳的支持。通过特殊处理可以和flink引擎结合产生血缘数据


2、DataHub:

优点:

实时数据集成:DataHub 提供了实时数据集成的能力,可以自动发现和捕获数据源的变化。

与现有工具集成:DataHub 可以与现有的工具和系统集成,如Kafka、Hadoop和Kubernetes等。

可扩展:DataHub 使用分布式架构,可以水平扩展以处理大规模的数据元数据。

缺点:

社区相对较新:DataHub 的开发社区相对较新,相比于 Apache Atlas 等老牌工具,可能缺乏一些成熟度和广泛性。

功能相对简单:与 Apache Atlas 相比,DataHub 的功能相对简单,可能不能满足所有复杂的元数据管理需求。

3、Amundsen:

优点:用户友好的界面:Amundsen 提供了用户友好的用户界面,使得数据血缘和元数据管理更加直观和易用。

强调数据消费者:Amundsen 强调数据消费者的使用体验,提供了交互式搜索和探索数据的功能。

可扩展和可定制:Amundsen 的架构可以轻松地进行扩展和定制,以适应不同的业务场景。

缺点:

缺少某些高级功能:与 Apache Atlas 相比,Amundsen 在某些高级功能方面可能还有所欠缺,如安全性和遗留系统集成等。

需要根据实际需求和环境来选择适合的工具,这三个工具各自都有其适用的场景和优点。
(部分内容来源网络,如有侵权请联系删除)
立即申请数据分析/数据治理产品免费试用 我要试用
customer

在线咨询