采集器采集源(基于元数据采集的Meta对象体系采集存储,实现企业数据资产管理)

优采云 发布时间: 2022-01-23 12:28

  采集器采集源(基于元数据采集的Meta对象体系采集存储,实现企业数据资产管理)

  阅读时间:约9分钟

  介绍

  元数据是描述数据的数据。元数据通常收录数据的基本信息和数据沿袭信息。

  在实际业务场景中,业务人员面对数据问题时,需要评估影响范围,定位问题环节,以及负责人的情况。

  根据元数据,可以分析上游问题表、调度任务、下游影响表和影响范围。基于这种有效的评估,企业可以更有效地管理企业数据资产。

  一、概览

  元数据采集可以分为*敏*感*词*绕着元对象系统展开。(如下所示)

  

  架构图

  来源:袁山

  元对象系统:元对象系统是一系列精心设计的元数据API和数据结构,具有屏蔽复杂特征和抽象通用操作的能力。它适用于整个元数据周期,例如:采集 周期、分析周期等。所有的元数据行为都围绕着它们。

  External System Metadata采集 :将外部元数据应用到 Simba 元数据的过程。由于外部系统中存在不同的数据源,具有独特的访问、存储、序列化等形式。因此,我们需要针对不同的数据源分析获取有价值的通用信息(如字段序号、名称、类型、描述等),并将其转化为标准化统一的内部元数据形式。

  元数据血缘关系采集:经过一系列调度任务,数据会产生错综复杂的元数据关系,如源表、源字段、调度任务、负责人、目标表、目标字段、指标等。我们将这些数据通过元对象系统采集 存储,为进一步分析做准备。

  下面我们简要介绍每个主要模块的技术和设计。

  二、元对象系统

  采集元数据首先要设计一个好的API规范。我们首先定义一个抽象的元数据对象系统,如分区、表、字段和扩展,并通过不同的数据源解析器将它们解析成抽象的元数据对象,所有的操作都围绕着对象系统进行。

  

  采集外部元数据 - *敏*感*词*

  来源:袁山

  - 元分区

  分区元数据,包括分区数、分区字段等信息。

  - 元表

  表元数据,包括DB名、表名、表ID、分区ID、创建时间等信息。数据治理通常围绕它展开,也是获得 MetaColumn 的先决条件。

  - 元列

  字段元数据,包括名称、类型、注释、单词是否分区等字段信息。它在数据同步映射、数据指标、数据沿袭等方面发挥着重要作用。

  - 元扩展

  扩展元数据,我们可以通过扩展元数据来支持更通用的属性,比如总存储量、索引大小、访问频率等,可以帮助我们更好地管理数据。

  三、外部元数据采集

  对于不同的数据源,元数据的存储形式是不同的。对于不同数据源的分析,核心是定位元数据结构和存储位置。我们以字段元数据(MetaColumn)为例:

  - MySQL 元解析

  MySQL字段元数据信息主要存储在information_schema.columns中,其中ORDINAL_POSITION、COLUMN_NAME、DATA_TYPE、COLUMN_COMMENT、TABLE_SCHEMA、TABLE_NAME是关键字段,分别表示序号、字段名、数据类型、描述、库名、表名。

  - 甲骨文元解析

  Oracle字段元数据信息主要存储在ALL_TAB_COLUMNS、ALL_COL_COMMENTS中,其中ALL_TAB_COLUMNS.COLUMN_ID、ALL_TAB_COLUMNS.COLUMN_NAME、ALL_TAB_COLUMNS.DATA_TYPE、ALL_COL_COMMENTS.COMMENTS、ALL_TAB_COLUMNS.TABLE_NAME、ALL_TAB_COLUMNS.TABLE_NAME、ALL_TAB_COLUMNS.OWNER是关键字段,含义是数据类型序列号, ,表名,所有者。

  - Postgresql 元解析

  postgresql字段元数据信息主要存放在PG_CLASS、PG_ATTRIBUTE、PG_TYPE、PG_NAMESPACE、PG_DESCRIPTION中,其中PG_ATTRIBUTE.ATTNUM、PG_ATTRIBUTE.ATTNAME、PG_TYPE.TYPNAME、PG_DESCRIPTION.DESCRIPTION、PG_CLASS.RELNAME、PG_NAMESPACE.NSPNAME是关键字段,含义是序列号、字段名、类型、描述、表名、命名空间。

  - Impala 元解析

  Impala字段元数据信息,可以通过执行“DESCRIBE {tablename}”SQL获取。其中,NAME(1)、TYPE(2)、COMMENT(3))属于关键字段,含义分别为字段名、类型、含义。

  - Hive 元解析

  Hive字段元数据信息,可以通过多种方式读取元数据,比如直接通过SQL读取MySQL元数据,通过HIVE“DESCRIBE FORMATTED”命令集,IMetaStoreClient API。我们关注MySQL元数据存储结构,主要存储在DBS、TBLS、COLUMNS_V2中,其中关键字段COLUMNS_V2.COLUMN_NAME、COLUMNS_V2.TYPE_NAME、COLUMNS_V2.COMMENT、COLUMNS_V 2.@ >INTEGER_IDX, DBS.NAME, COLUMNS_V2.TBL_NAME,分别表示字段名、类型、含义、序列号、库名、表名。

  - Elasticsearch 元解析

  Elasticsearch 字段元数据信息可以通过 JestClient 对单个表执行查询来获取。Elasticsearch 使用 JSON 结构来定义表和字段元数据信息。每个字段的 JSON 对象是通过解析 JSON 中的 mappings 字段得到的,其中 KEY、TYPE 和 INDEX 是关键字段,分别表示字段名称、类型和序列号。

  四、元数据亲缘关系采集

  DataSimba 中的数据沿袭信息通常来自用于解析生产数据的 SQL 等操作。本节以大数据处理中最常用的离线计算引擎Hive为例,介绍如何通过解析作业的SQL脚本获取数据沿袭信息。其他计算引擎,如 SparkSQL 和 FlinkSQL,原理上类似。

  当收到类似如下的 Hive SQL 语句时

  SELECT id, name from t_user where status = 'active' and age > 18

  ← 向左滑动

  HIVE的处理如下:

  01. 语法分析

  使用 Antlr 将 SQL 语句解析成抽象语法书(AST),例如:

  

  来源:袁山

  02. 语义分析

  验证 SQL 语句中的表名、列表、数据类型和隐式转换,以及 Hive 提供的函数和用户定义函数(UDF/UAF);和元数据绑定,它会从 Hive 数据库中查询相关的元数据,并绑定符号分配给源表的字段。

  03. 逻辑计划生成

  生成一个逻辑计划,简单的理解就是抛出结果的计算计划可以在单机上按顺序执行。

  04. 逻辑计划优化

  在不改变执行结果的情况下,优化算子数量,优化执行计划。常见的如PartitionPrune,在Hive中定义了一个分区表,Partition字段也出现在Where条件中,所以执行时只扫描分区数据。

  05. 物理计划生成

  生成收录由 MapReduce 任务组成的 DAG 物理计划(Tez、Spark)的逻辑计划。逻辑计划将被反汇编,为 Mapper 和 Reducer 生成不同的步骤。

  06. 分布式物理计划执行

  将 DAG 发送到 Hadoop 集群以执行。

  在上面的 Hive 工作流 - 语法分析步骤中,我们可以遍历 AST 来获取哪些是输入表,哪些是输出表。例如以下 SQL:

  insert overwrite table over_tmp select id, age, name from tmp;

输入表: tmp, 输出表: over_tmp

  ← 向左滑动

  Hive 提供对静态沿袭解析的支持。输入表和输出表可以分别通过 LineageInfo.getInputTableList() 和 LinegeInfo.getOutputTable() 获取。

  Hive 还为动态血缘关系分析提供支持。HiveHook 拦截 Hive 执行过程,动态获取关系。Bloodline采集HiveHook 在 Post-execution hooks 进程中运行。在查询执行完成后、结果返回给用户之前调用。我们可以将源表、目标表、源字段、目标字段及其关系发送给MQ,并通过集群消费者将血缘数据订阅到存储介质中。

  至此,通过本章的学习,我们大致了解了如何采集外部元数据,构建内部元数据,以及基于Hive采集的静态/动态血统。当然,元数据和基于元数据的数据分析并不止于此。我们将在未来的研究中继续深入讨论它们。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线