-
什么是元数据?
元数据MetaData狭义的解释是用来描述数据的数据,广义的来看,除了业务逻辑直接读写处理的那些业务数据,所有其它用来维持整个系统运转所需的信息/数据都可以叫作元数据。比如数据表格的Schema信息,任务作业的血缘关系,用户和数据治理任务的权限映射关系信息等。 -
为什么进行元数据管理?
对数据库表的元数据用元数据工具进行管理,就可以很清楚的知道表与表之前的血缘关系。一个表从哪几个表通过什么方式得来的,这些信息可以辅助我们问题追踪。方便数据资产管理,对于几千张表的,有了元数据工具能够快速查询管理。
与其说数据仓库是软件开发项目,还不如说是系统集成项目,因为它的主要工作是把所需的数据仓库工具集成在一起,完成数据的抽取、转换和加载,OLAP分析和数据挖掘等。如下图所示,它的典型结构由操作环境层、数据仓库层和业务层等组成。
image.png -
元数据模型
(1)元数据类型(types)
元数据类型说明如何存储并访问特定类型的元数据对象。类型表示一个特征或一个特性集合, 这些属性定义了元数据对象。具有开发背景的用户将识别类型的相似性, 以面向对象编程语言元数据的 “Class” 定义或关系的 “table schema”数据库。
(2)元数据实例(Entity)
实体是元数据类型的特定值或实例, 因此表示特定的元数据对象。面向对象的类比编程语言, “instance” 是某个 “Class” 的 “Object”。
(3)属性(Attribute**)
属性定义在复合 metatypes 中, 如Class和Struct。可以简单将属性称为具有名称和 metatype 值。然而Atlas 中的属性有更多的属性来定义与type system相关的更多概念。 -
元数据功能
(1)元数据管理
元数据管理包括元数据类型管理和元数据实体管理等,元数据类型有hive_table、hive_db等,元数据实体管理包括元数据创建、修改、删除、查看。可通过元数据版本号,实现元数据变更。
(2)元数据搜索与发现
提供的UI,能够按类型(type),分类(classification),属性值(attribute)或自由文本搜索实体。丰富的REST API,可按复杂条件进行搜索。提供SQL搜索实体的查询语言 - 域特定语言(DSL)。
(3)元数据分析
元数据分析包括元数据的追踪关系、数据血缘、元数据的统计等。通过元数据分析,能够对数据资产信息,包括有几个库、多少张表,以及表之间的关系。
(4)其他元数据功能
元数据标签、元数据安全等元数据管理功能。
5.开源元数据管理
(1)Altas
Atlas的主要目标是数据治理,支持与HBase,Hive和Kafka的集成。通过API示例了解Atlas元数据类型、元数据实体等。
1)Altas元数据类型(types)
通过API http://atlasserverhost:port/api/atlas/types获取所有的****types****。Altas元数据类型有:hive_db 、hive_table 、hive_column等,具体如下返回结果
{
"results": [
"Asset",
"hive_column",
"Process",
"storm_node",
"storm_bolt",
"falcon_process",
"falcon_feed_replication",
"hive_serde",
"kafka_topic",
"hive_table",
"hive_storagedesc",
"sqoop_dbdatastore",
"hive_principal_type",
"fs_permissions",
"jms_topic",
"hive_process",
"falcon_cluster",
"storm_spout",
"Referenceable","falcon_feed_creation",
"falcon_feed",
"hdfs_path",
"sqoop_process",
"Infrastructure",
"storm_topology",
"hive_order",
"DataSet",
"fs_path",
"hive_db",
"file_action"
],
"count": 34,
"requestId": "qtp180396531315
b17554dcf93d4d7fa6ede124388a5759"
}
2)Altas元数据实例
一个元数据实例的定义:
id: "9ba387ddfa76429cb791ffc338d3c91f"
typeName: “hive_table”
values:
name: “customers”
db: "b42c6cfcc1e742fda9e6890e0adf33bc"
owner: “admin”
createTime: "20160620T06:
13:28.000Z"
lastAccessTime: "20160620T06:
13:28.000Z"
comment: null
retention: 0
sd: "ff58025f685441959f753a3058dd8dcf"
partitionKeys: null
aliases: null
columns: ["65e2204f6a234130934a9679af6a211f",
"d726de70faca46fb9c99cf04f6b579a6",
...]
parameters: {"transient_lastDdlTime": "1466403208"}
viewOriginalText: null
viewExpandedText: null
tableType: “MANAGED_TABLE”
temporary: false
3)Altas属性(Attribute**)
属性定义在复合 metatypes 中, 如Class和Struct。可以简单将属性称为具有名称和 metatype 值。然而Atlas 中的属性有更多的属性来定义与type system相关的更多概念。
(2)Marquez
Wework于2018年10月开源了Marquez, Marquez更加轻量级,对Airflow有着很好的支持。
Marquez数据模型。Marquez的数据模型强调数据集的不变性和及时处理性。数据集由作业运行生成,价值重要。作业运行与版本代码链接,并生成一个或多个不可变的版本输出。数据集的更改通过轻量级API的调用被记录在作业执行的不同点,包括运行本身的成功或失败。
1)作业:作业包含所有者、唯一名称、版本和可选描述。作业会将一个或多个版本输入定义为依赖,并将一个或多个版本输出定义为artifacts。需注意的是,作业可能只定义了输入数据集,也可能仅定义了输出数据集。
2)作业版本:作业的只读不可变版本,有唯一可引用的链接,以编码存储保证源码的重现。作业版本将一个或多个输入和输出数据集关联到作业定义(数据在各种作业中的流转,对记录血缘信息很重要)。这些关联对源链接进行分类,并提供强大的可视化数据流。
3)数据集:数据集有所有者、唯一名称、schema、版本和可选描述。数据集包含于数据源。数据源可将物理数据集分组到它们的物理源。每个数据集都有一个指向历史更改集的版本指针,由Marquez来维护。当将数据集更改提交回Marquez时,将生成一个唯一的版本ID,进行存储,然后将其设置为当前版本,并在内部更新指针。
4)数据集版本:数据集的只读不可变版本。每个版本都可以独立读取,有一个唯一ID,映射到数据集的更改,以保留其在特定时间点的状态。只有当数据集的更改被记录,才会更新最新版本ID。为了计算不同的版本ID,Marquez将版本控制功能应用于与底层数据源的数据集相对应的一组属性。
参考
[1]收藏】关于元数据(Metadata)和元数据管理,这是我的见过最全的解读!
[2]使用Atlas进行元数据管理之Atlas简介
[3]Apache atlas 的入门教程
[4]数据治理---Apache Atlas元数据管理
[5]Marquez,开源的元数据管理工具
[6]Marquez Data Model
网友评论