在成体系的大数据开发的工作中,离不开元数据管理、数据整合、数据治理、数据质量管控等等。本篇文章从元数据是什么,为什么要有元数据,元数据分类,元数据管理等方面谈谈元数据。
元数据是什么
要理解这个问题,首先要知道“元”是什么。
元数据意味着“有关数据的数据”。虽然“meta”前缀(来自希腊语介词和前缀 μετά-)意味着“之后”或“超越”,但它用于在认识论中表示“约”。元数据可以为数据说明其元素或属性(名称、大小、数据类型等),或其结构(长度、字段、数据列),或其相关数据(位于何处、如何联系、拥有者)。
先让我们看一些真实的元数据示例:
每次用今天的相机拍照时,都会收集并保存一堆元数据:
l 日期和时间,
l 文件名,
l 相机设置,
l 地理位置。
一本书
每本书都有封面和内部的许多标准元数据。这包括:
l 一个标题,
l 作者姓名,
l 出版商和版权细节,
l 背面的描述,
l 目录,
l 指数,
l 页码。
从这些真实的元数据可以看出,元数据是关于数据的描述,存储着关于数据的信息。
为什么要有元数据以及元数据管理
元数据管理很多年前就有了,比如很多公司会拿Excel或者是文本存储数据仓库里所有的表结构,以方便大家查询。但是现代元数据平台与传统的元数据管理有什么区别呢?现代元数据平台在于自从拥有了大数据以后,一个公司已经不仅仅只需要一个数据库就可以支撑数据分析等工作,而是需要分布式数据存储、计算、可视化、调度等等复杂的工具组成的现代数据技术栈)(Modern Data Stack)。此时就需要一个现代元数据平台去管理现代数据技术栈,以防止公司的数据生态系统由于分散和增长而变成笨重的野兽。
公司的持续发展导致公司内部的系统中有数百万个数据集,没有人知道它们是什么,它们是如何计算的,在哪里可以找到正确的数据,甚至如果有问题该问谁。
元数据贯穿大数据平台数据流动的全过程,主要包括数据源的元数据,数据加工处理过程的元数据,数据仓库或数据主题库的元数据,数据应用层的元数据,数据接口服务的元数据。
元数据分类
将元数据按用途可分为三类:技术元数据、业务元数据、管理元数据
- 技术元数据
技术元数据包括:库表结构、字段约束、数据模型、ETL程序、sql程序、数据质量监控等。
存储元数据:表、字段、分区等信息
运行元数据:大数据平台上所有运行等信息:类似于Hive Job 日志,包括作业类型、实例名称、输入输出、SQL、运行参数、执行时间、执行引擎、占用资源等
数据同步、计算任务、任务调度等信息:数据同步的输入输出表和字段,以及同步任务本身的节点信息;任务调度主要有任务的依赖类型、依赖关系、调度周期。
- 业务元数据
业务指标、业务代码、业务术语等。
包含:指标名称、指标编码、统计口径、指标类型、责任人、创建时间、状态、SQL等
- 管理元数据
数据所有者、数据治理定责、数据安全等级等
描述了数据的管理属性,包括管理部门、管理责任人,通过明确管理属性,有利于数据管理责任到部门和个人,是数据安全管理的基础。
元数据的应用
- 应用一:数据血缘
主要解决“数据之间的关系”,数据血缘分析是获取数据的血缘关系,它有任务级别关系、表级别的关系、字段级别关系。以历史事实的方式记录数据的来源,处理过程等。 - 应用二:数据影响分析
它是分析数据的下游流向。比如当系统表结构进行升级改造的时候,如果修改了数据表结构或者ETL的程序。可以快速定位元数据修改会影响到哪些下游系统,从而减少系统升级改造带来的风险。
比如说改表结构后发现对下游ADS相关3个指标都有影响,定位影响之后,数据部门及时通知下游相关系统的管理人员,修改了下游的相应程序和表结构,就避免问题的发生。
所以影响性分析快速定位元数据变更可能带来的影响,提前干预。 - 应用三:数据冷热度分析
冷热度分析主要是对数据表的被使用情况进行统计,告诉你哪些数据是常用数据,哪些数据任务是僵尸数据。 - 应用四:数据地图
1.根据关键词查表的问题
2.根据表名查字段,查表介绍的问题
3.查看表的大小,存储方式,存储周期
4.如果涉及到字段添加,字段修改找谁的问题
元数据管理
对于元数据管理,目前有三种方式可供选择
- 手工维护
对于规模比较小,并且业务不大的公司,可能会使用这种方式,但是这种方式太古老,且容易出错,如wiki,excel,svn之类的协作工具。 - 开源组件Atlas
Apache Atlas 是Hadoop社区为解决Hadoop生态系统的元数据治理问题而产生的开源项目,它为Hadoop集群提供了包括数据分类、数据血缘、安全和生命周期管理在内的元数据治理核心功能。
Atlas的特性- 通过atlas为数据系统开发好的hook来注入元数据
- 通过atlas自带的web-ui前端系统来注入、查看、修改元数据
- 通过调用atlas对外暴露的api,来开发自己的管理系统
- 自研系统
自研元数据管理系统或者在数据平台开发元数据管理模块,很多大公司会基于hive hook,spark listerner,Flink Hook。