大数据:元数据(Metadata)
一、元数据概述
1、元数据定义
- 元数据:按传统的定义,元数据就是关于数据的数据;
- 元数据的用途:
- 打通源数据、数据仓库、数据应用,记录数据从产生到消亡的全过程;
- 主要记录:数据仓库中模型的定义、各层级间的映射关系、监控数据仓库中的数据状态、监控 ETL 的任务的运行状态;
- 在数据仓库系统中,元数据可以帮助数据仓库管理员和开发人员,非常方便的 找 到他们所关系的数据,用于指导其进行数据管理和开发,提供工作效率;
- 打通源数据、数据仓库、数据应用,记录数据从产生到消亡的全过程;
- 将元数据按用途的不同分为两类:
- 技术元数据(Technical Metadata);
- 业务元数据(Business Metadata);
1/1)技术元数据
- 作用 / 用途:存储关于数据仓库系统技术细节的数据,用于开发和管理数据仓库;
- 例:阿里常见的技术元数据:
- 分布式计算系统的存储元数据
- 如,MaxCompute 表、列、分区等:
- 记录了表的表名、分区信息、负责人信息、文件大小、表类型,生命周期;
- 列的字段名、字段类型、字段备注、是否是分区字段等;
- 如,MaxCompute 表、列、分区等:
- 分布式计算系统的运行元数据
- 如,MaxCompute 上所有作业运行等信息;
- 类似于 Hive 的 Job 日志,包括作业类型、实例名称、输入输出、SQL、运行参数、执行时间、最细粒度的 Fuxi Instance(MaxCompute 中 MR执行的最小单元)执行信息等;
- 如,MaxCompute 上所有作业运行等信息;
- 数据开发平台中,数据同步、计算任务、任务调度等信息
- 数据同步信息:数据同步的输入输出表和字段、同步任务本身的节点信息;
- 任务调度信息:任务的依赖类型、依赖关系等,以及不同类型调度任务的运行日志等;
- 计算任务信息:输入输出、任务本身的节点信息;
- 与数据质量和运维相关的元数据
- 如任务监控、运维报警、数据质量、故障等信息,包括任务监控运行日志、告警配置及运行日志、故障信息等;
1/2)业务元数据
- 作业 / 用途:从业务角度描述了数据仓库中的数据,提供了介于使用者和实际系统之间的语义层,使得不懂计算机技术的业务人员也能够 “读懂” 数据仓库中的数据;
- 阿里常见的业务元数据:
- OneData 元数据
- 如,维度及属性、业务过程、指标等的规范化定义,用于更好的管理和使用数据;
- 数据应用元数据
- 如,数据报表、数据产品等的配置和运行元数据;
- OneData 元数据
2、元数据的价值
- 元数据最重要的应用价值,是数据管理、数据内容、数据应用的基础;
- 数据管理方面
- 为集团数据提供在计算、存储、成本、质量、安全、模型等治理领域上的数据支持;
- 如,在计算上可以利用元数据查找超长运行节点,对这些节点进行专项治理,保障基线产出时间;
- 为集团数据提供在计算、存储、成本、质量、安全、模型等治理领域上的数据支持;
- 数据内容方面
- 为集团数据进行数据域、数据主题、业务属性等的提取和分析,提供数据材料;
- 如,可以利用元数据构建知识图谱,给数据打标签,清楚的知道现在有哪些数据;
- 为集团数据进行数据域、数据主题、业务属性等的提取和分析,提供数据材料;
- 数据应用方面
- 打通了产品及应用链路,保障产品数据准确、及时产出;
- 如,打通 MaxCompute 和应用数据,明确数据资产等级,更有效的保障产品数据;
- 打通了产品及应用链路,保障产品数据准确、及时产出;
3、统一元数据体系建设
- 元数据建设的目标:
- 打通数据接入到加工,再到数据消费的整个链路,规范元数据体系与模型,提供统一的元数据服务出口,保障元数据产出的稳定性和质量;
-
元数据体系建设的思路:(以阿里元数据体系 OneMata 为例)
-
首先梳理清楚元数据底层数据
- 对元数据做分类,较少数据重复建设,保障数据的唯一性;
- 分类:计算元数据、存储元数据、质量元数据、模型元数据、成本管理元数据等;
- 丰富表和字段使用说明,方便使用和理解;
- 对元数据做分类,较少数据重复建设,保障数据的唯一性;
-
根据元仓底层数据构建元仓中间层
- 依据 OneData 规范,建设元数据基础宽表,也就是元数据中间层,打通从数据产生到消费的整个链路,不断丰富中间层数据;
- 如,MaxCompute 元数据、调度元数据、同步元数据、产品访问元数据、服务器元数据、应用注册元数据等;
- 基于元数据中间层,对外提供标准统一的元数据服务出口,保障元数据产出的质量;
- 依据 OneData 规范,建设元数据基础宽表,也就是元数据中间层,打通从数据产生到消费的整个链路,不断丰富中间层数据;
-
应用
- 丰富的元数据中间层,能够为集团数据提供在计算、存储、成本、质量、安全、模型等治理领域上的数据支持,形成一套完整的 ROI 数据体系;
- 丰富的元数据中间层,还能为为集团数据进行数据内容、数据域、数据主题、业务属性等的提取和分析提供了数据素材;
二、元数据应用
- 数据的真正价值在于,数据驱动决策,通过数据指导运营;
- 数据化运营:通过数据驱动的方法,判断趋势,从而展开有效行动,帮助发现问题,推动创新或解决方案的产生;
-
元数据应用示例:
- 对于数据使用者,可以通过元数据指导其快速找到所需要的数据;
- 对于 ETL 工程师,可以通过元数据指导其进行模型设计、任务优化、任务下线等各种日常 ETL 工作;
- 对于运维工程师,可以通过元数据指导其进行整个集群的存储、计算、系统优化等运维工作;
1、Data Profile
- 核心思路:为纷繁复杂的数据,建立一个脉络清晰的血缘图谱;
- 主要功能:通过图计算、标签传播算法等技术,系统化、自动化的对计算与存储平台上的数据,进行打标、整理、归档;
- 形象的说,Data Profile 实际承担的是为元数据 “画像” 的任务;
-
Data Profile 共有四类标签:
- 思路:数据之间的个性化,除了应用场景的不同之外,实际上在数据研发流程、保障登记、数据质量要求、安全等级、运维策略、警告设置上都会有差异;
- 作用:节约研发人员的时间成本,同时对阿里内部的非研发人员来说,也可以更直观的理解数据、利用数据,从而提升数据的研发效率;
- 根据这种差异化,Data Profile 开发了四类标签:
- 基础标签:针对数据的存储情况、访问情况、安全等级等进行打标;
- 数仓标签:针对数据是增量还是全量、是否可再生、数据的生命周期来进行标签化处理;
- 业务标签:根据数据归属的主题域、产品线、业务类型,为数据打上不同的标签;
- 潜在标签:主要为了说明数据潜在的应用场景,如,社交、媒体、广告、电商、金融等;
2、元数据门户
- 主要功能:数据搜索和数据管理;
- 功能模块:“前台”、“后台”;
-
“前台” 产品数据地图
- 功能:定位消费市场,实现检索数据、理解数据等 “找数据” 的需求;
- 数据地图:
- 服务对象:围绕数据搜索,服务于数据分析、数据开发、数据挖掘、算法工程师、数据运营等,数据表的使用者和拥有者;
- 服务内容:提供方便快捷的数据搜索服务,拥有功能强大的血缘信息及影响分析,利用表使用说明、评价反馈、表收藏级精品表机制,为用户浮现高质量、高保障的目标数据;
- 如,在数据分析前,使用数据地图进行关键词搜索,帮助快速缩小范围,找到对应的数据;
- 如,使用数据地图根据表名直接查看表详情,快速查阅明细信息,掌握使用规则;
- 如,通过数据地图的血缘分析,可以查看每个数据表的来源、去向,并查看每个表及字段的加工逻辑;
-
“后台” 产品数据管理
- 功能:定位于一站式数据管理,实现成本管理、安全管理、质量管理等;
- 数据管理平台:
- 服务对象及内容:个人开发者、BU 管理者、系统管理员等用户,提供个人和 BU 全局资产管理、成本管理、质量管理等;
- 针对个人开发者,主要包括计算费用和健康分管理、存储费用和健康分管理,并提供优化建议和优化接口;
- 针对 BU 管理者和管理员,主要提供 BU、应用、集群等全局资产消耗概览、分析和预测;
- 服务对象及内容:个人开发者、BU 管理者、系统管理员等用户,提供个人和 BU 全局资产管理、成本管理、质量管理等;
3、应用链路分析
- 思路 / 功能:
- 配置数据间的 “血缘关系”,用户可以通过元数据血缘,分析产品及应用的链路;通过血缘链路可以清楚的统计到某个产品所用到的数据在计算、存储、质量上存在哪些问题;通过治理优化保障产品数据的稳定性;
- 实例:业务需求
- 对于某个数据计算任务或表,其重要程度如何?是否还有下游在使用?是否可以下线?
- 阿里的很多数据产品,都依赖哪些 MaxCompute 表?对这些 MaxCompute 表是否需要根据应用的重要程度进行资源、运维保障?
- 解决思路:
- 通过元数据血缘来分析产品及应用的链路,通过血缘链路可以清楚的统计到某个产品所用到的数据在计算、存储、质量上存在哪些问题,通过治理优化保障产品数据的稳定性;
- 通过应用链路分析,产出 3 中血缘类型:表级血缘、字段血缘、表的应用血缘;
-
表级血缘主要有 2 中计算方式:
- 通过 MaxCompute 任务日志进行解析;
- 根据任务依赖进行解析;
-
表的应用血缘解析:
- 难点最大;
- 按照应用和物理表的配置关系,可以分为配置型和无配置型:
-
配置型:
- 如,对于数据报表、集市等应用,其数据源直接或间接使用 MaxCompute 数据,且有元数据配置依赖关系,通过配置元数据,可以获取 MaxCompute 物理表、具体的报表、集市等应用的血缘关系;
- 问题案例:对于生意参谋等数据产品,其数据源通过数据同步方式同步到 MySQL、HBase 等数据库,间接使用 MaxCompute 数据,且无配置产品和 MySQL、HBase 等物流数据源的依赖关系,导致无法通过配置源数据解析 MaxCompute 数据和数据产品的关系;
- 解决方案:主要通过统一的应用日志打点 SDK 来解决此类问题,可以做到配置化、应用无痕化;
-
无配置型:
- 常见的应用链路分析应用:主要有影响分析、重要性分析、下线分析、链路分析、寻根溯源、故障排查等;
-
4、数据建模
- 思路 / 业务场景:基于现有底层数据已经有下游使用的情况,可以通过下游使用的元数据指导数据参考模型;
- 通过元数据驱动的数据仓库模型建设,提高了数据仓库建模的数据化指导,提升建模效率;
- 下游使用情况:指查询、关联、聚合、过滤等操作;
- 记录下游使用情况的数据,就是辅助建设模型的元数据;
- 操作:设置阈值,记录下游对数据的使用情况,使用次数超过阈值的情况,将被用来参考建模;
-
数据仓库建模所使用的元数据:
-
其中,查询值 SQL 的 SELECT,关联指 SQL 的 JOIN,聚合指 SQL 的 GROUP BY,过滤指 SQL 的 WHERE;
- 表的基础元数据
- 包括下游情况、查询次数、关联次数、聚合次数、产出时间等;
- 表的关联关系元数据
- 包括关联表、关联类型、关联字段、关联次数等;
- 表的字段的基础元数据
- 包括字段名称、字段注释、查询次数、关联次数、聚合次数、过滤次数等;
-
-
在星形模型设计过程中,可能类似于如下使用元数据:
- 基于下游使用中关联次数大于某个阈值的表,或查询次数大于某个阈值的表等元数据信息,筛选用于数据模型建设的表;
- 基于表的字段元数据,如,字段中的时间字段、字段在下游使用中的过滤次数等,选择业务过程标识字段;
- 基于主从表的关联关系、关联次数,确定和主表关联的从表;
- 基于主从表的字段使用情况,如,字段的查询次数、过滤次数、关联次数、聚合次数等,确定哪些字段进入目标模型;
5、驱动 ETL 开发
- 思路:通过元数据,指导 ETL 工作,提高 ETL 的效率;
-
实例场景:
- 通过 Data Profile 得到数据的下游任务依赖情况、最近被读写次数、数据是否可再生、每天消耗的存储计算等,通过这些信息判断数据是否可以下线;
- 如果根据一些规则判断数据可以下线,则会通过 OneClick 触发一个数据下线的工作任务流,数据 Owner 可能只需要点击提交按钮,删除数据、删除元数据、下线调度任务、下线 DQC 监控等一些列的操作就会自动在后台执行完成;