摘要
本文主要介绍了元数据管理在数据治理领域的重要性。元数据分为技术元数据、业务元数据、操作元数据和管理元数据,其价值体现在数据资产管理、提升数据可理解性、支撑数据血缘分析、辅助数据质量治理、实现数据共享与复用、支撑自动化运维与开发以及实现数据合规与审计追踪等方面。企业应用实践场景包括数据目录平台、数据血缘图、数据质量监控平台和自助数据分析平台。统一元数据体系建设的目标是统一标准、打通上下游、支撑数据治理和资产化管理以及提升数据可用性,其核心能力模块包括元数据采集、管理、服务和数据血缘管理。
1. 元数据定义
按照传统的定义,元数据(Metadata)是关于数据的数据。元数据打通了源数据、数据仓库、数据应用,记录了数据从产生到消费的全过程。元数据主要记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态及ETL的任务运行状态。在数据仓库系统中,元数据可以帮助数据仓库管理员和开发人员非常方便地找到他们所关心的数据,用于指导其进行数据管理和开发工作,提高工作效率。
将元数据按用途的不同分为两类:技术元数据(Technical Metadata)和业务元数据(Business Metadata)。技术元数据是存储关于数据仓库系统技术细节的数据,是用于开发和管理数据仓库使用的数据。阿里巴巴常见的技术元数据有:
- 分布式计算系统存储元数据,如MaxCompute表、列、分区等信息。记录了表的表名。分区信息、责任人信息、文件大小、表类型,生命周期,以及列的字段名、字段类型、字段备注、是否是分区字段等信息。
- 分布式计算系统运行元数据,如MaxCompute上所有作业运行等信息;类似于Hive的Job日志,包括作业类型、实例名称、输入输出、SQL、运行参数、执行时间、最细粒度的Fuxi Instance(MaxCompute中MR执行的最小单元)执行信息等。
- 数据开发平台中数据同步、计算任务、任务调度等信息,包括数据同步的输入输出表和字段,以及同步任务本身的节点信息;计算任务主要有输入输出、任务本身的节点信息;任务调度主要有任务的依赖类型、依赖关系等,以及不同类型调度任务的运行日志等
- 数据质量和运维相关元数据,如任务监控、运维报警、数据质量、故障等信息,包括任务监控运行日志、告警配置及运行日志、故障信息等
业务元数据从业务角度描述了数据仓库中的数据,它提供了介于使用者和实际系统之间的语义层,使得不懂计算机技术的业务人员也能够“读懂”数据仓库中的数据。阿里巴巴常见的业务元数据有:
- OneData元数据,如维度及属性、业务过程、指标等的规范化定义,用于更好地管理和使用数据。
- 数据应用元数据,如数据报表、数据产品等的配置和运行元数据。
2. 元数据价值
在大数据数仓中,元数据(Metadata)是对数据的“数据”,即描述数据的数据。它在大数据体系中扮演着核心角色,具有以下几方面的重要价值:
2.1. ✅ 元数据在数仓中的分类
| 元数据类型 | 描述 | 示例 |
|---|---|---|
| 技术元数据 | 描述数据表、字段、类型、分区等技术结构信息 | 表名、字段名、数据类型、Hive分区 |
| 业务元数据 | 描述数据的业务含义和规则 | “订单金额”字段的业务定义、计算逻辑 |
| 操作元数据 | 记录数据的处理流程、ETL过程、调度信息 | 数据从哪来、如何加工、加工周期 |
| 管理元数据 | 数据的权限、安全、生命周期管理信息 | 数据权限、数据责任人、保留策略 |
2.2. ✅ 元数据的价值体现
| 价值点 | 说明 |
|---|---|
| 1. 数据资产管理基础 | 元数据是识别、评估、管理数据资产的基础,使数据资源清晰可见、有据可查 |
| 2. 提升数据可理解性和透明度 | 元数据为表和字段提供业务定义和注释,帮助业务人员理解数据含义 |
| 3. 支撑数据血缘分析和影响分析 | 通过元数据构建数据血缘(数据从哪里来,去哪了),便于数据追溯和风险控制 |
| 4. 辅助数据质量治理 | 结合元数据可发现空值、格式不一致等问题,支持数据质量规则自动化检测 |
| 5. 实现数据的共享与复用 | 标准化的元数据让跨部门、跨系统使用数据更容易,避免重复造数 |
| 6. 支撑自动化运维与开发 | 数据表变更、字段增加可以通过元数据系统通知开发与调度平台,减少人为沟通成本 |
| 7. 实现数据合规与审计追踪 | 元数据记录数据生命周期及访问历史,便于审计合规管理(如GDPR等) |
2.3. ✅ 企业应用实践场景示例
| 场景 | 说明 |
|---|---|
| 数据目录平台 | 企业级数据地图,用于搜索、查看、理解元数据,支持数据资产登记与数据服务 |
| 数据血缘图 | 可视化展示字段级/表级的上下游依赖,辅助变更影响分析 |
| 数据质量监控平台 | 基于元数据定义质量规则(如字段唯一性、值域限制等) |
| 自助数据分析平台 | 元数据支持按主题、业务定义分类组织数据,便于业务人员自助取数 |
📌 总结一句话:元数据是大数据数仓的神经系统,它连接数据、业务、流程与治理,帮助企业构建“可理解、可管理、可复用、可追溯”的数据资产体系。
3. 元数据系统架构
统一元数据体系建设,是企业实现 数据资产化、治理标准化与数据高质量使用 的关键能力。它打通了数据的全生命周期信息,支撑大数据平台的高效运维、分析、安全和共享。
3.1. ✅ 统一元数据体系建设的目标
| 目标 | 说明 |
|---|---|
| 统一标准 | 统一元数据的分类、命名规范、数据类型、接口协议等 |
| 打通上下游 | 贯通采集、加工、存储、服务等各环节元数据 |
| 支撑数据治理 | 为数据质量、权限、血缘、安全等治理提供基础 |
| 支撑资产化管理 | 实现数据资产目录、可视化管理与价值评估 |
| 提升数据可用性 | 让业务和数据人员更好理解和使用数据 |
3.2. ✅ 统一元数据体系的核心能力模块
| 模块 | 说明 |
|---|---|
| 1. 元数据采集 | 自动从数据库、ETL工具、大数据平台(Hive、Kafka、Flink等)中抓取技术元数据、操作元数据 |
| 2. 元数据管理 | 统一存储、分类管理技术、业务、管理元数据,实现版本控制、权限控制等 |
| 3. 元数据服务 | 提供标准化接口供其他系统查询元数据(如 API、SQL、GraphQL) |
| 4. 数据血缘管理 | 支持字段级、表级的数据上下游依赖关系展示 |
| 5. 数据质量关联 | 元数据体系对接数据质量平台,驱动规则自动应用与异常监测 |
| 6. 数据目录与搜索 | 构建可视化数据资产目录,支持按主题、标签、责任人等维度快速搜索 |
| 7. 审计与合规追踪 | 记录访问日志、数据变更,支撑审计追责和合规要求(如 GDPR、数据出境) |
3.3. ✅ 统一元数据体系建设原则
| 原则 | 说明 |
|---|---|
| 标准统一 | 元数据结构、字段、命名、分类需统一标准 |
| 自动采集优先 | 尽量减少人工录入,提高准确性与时效性 |
| 业务可理解 | 元数据应支持业务注解、业务定义、示例等信息 |
| 灵活扩展 | 支持对接多种数据源和工具,适应新技术发展 |
| 持续治理 | 建立元数据变更、审批、回溯等机制,避免“僵尸”数据 |
3.4. ✅ 统一元数据平台的技术架构
首先梳理清楚元仓底层数据,对元数据做分类,如计算元数据、存储元数据、质量元数据等,减少数据重复建设,保障数据的唯一性。另外,要丰富表和字段使用说明,方便使用和理解。根据元仓底层数据构建元仓中间层,依据OneData规范,建设元数据基础宽表,也就是元数据中间层,打通从数据产生到消费整个链路,不断丰富中间层数据,如MaxCompute元数据、调度元数据、同步元数据、产品访问元数据、服务元数据等。基于元数据中间层,对外提供标准统一的元数据服务出口,保障元数据产出的质量。丰富的元数据中间层不仅能够为集团数据提供在计算、存储、成本、质量、安全、模型等治理领域上的数据支持,形成一套完整的ROI数据体系,而且为集团数据进行数据内容、数据域、数据主题、业务属性等的提取和分析提供了数据素材。
3.5. ✅ 主流工具推荐(可选)
| 工具 | 简介 |
|---|---|
| Apache Atlas | Hadoop生态常用元数据管理工具,支持血缘分析、标签、权限 |
| DataHub | LinkedIn开源,现代化、支持实时采集和可插拔扩展 |
| Amundsen | Lyft开源,轻量级数据目录系统,支持搜索、血缘 |
| Egeria | IBM主导,企业级元数据共享标准 |
总结一句话: 构建统一元数据体系,是企业从“信息孤岛”走向“数据资产共享”的必由之路。它不仅提升数据的可见性、可信度与可控性,更是支撑数据中台与数据治理战略的基础设施。
4. 元数据应用
数据的真正价值在于数据驱动决策,通过数据指导运营。通过数据驱动的方法,我们能够判断趋势,从而展开有效行动,帮助自己发现问题,推动创新或解决方案的产生。这就是数据化运营。同样,对于元数据,可以用于指导数据相关人员进行日常工作,实现数据化“运营”。比如对于数据使用者,可以通过元数据让其快速找到所需要的数据;对于ETL工程师,可以通过元数据指导其进行模型设计、任务优化和任务下线等各种日常ETL工作;对于运维工程师,可以通过元数据指导其进行整个集群的存储、计算和系统优化等运维工作。
4.1. Data Profile建设
由于阿里巴巴拥有的数据体量实在难以估量,我们很难精确地说清楚到底拥有哪些数据,这些数据存储在哪里,如何使用它们等。过去,数据研发人员在寻找数据、确认口径算法等工序上,花费了大量的人力和时间而Data Profile的出现,很好地解决了在研发初期数据处理的繁杂困境,既节约了时间成本,同时也缩减了相当一部分人力资源。它的核心思路是为纷繁复杂的数据建立一个脉络清晰的血缘图谱。通过图计算、标签传播算法等技术,系统化、自动化地对计算与存储平台上的数据进行打标、整理、归档。形象地说,Data Profile实际承担的是为元
数据“画像”的任务。
Data Profile共有四类标签,就像我们可以为用户的网购行为打上不同的行为标签一样。如果我们也用同样的思维来看待数据本身,那么原本冷冰冰的僵硬数据,实际上也变得有血有肉、个性鲜明。数据之间的个性化,除了应用场景的不同之外,实际上在数据的研发流程、保障登记、数据质量要求、安全等级、运维策略、告警设置上都会有差异。根据这种差异化,Data Profile开发出了四类标签,如图12.2所示。
- 基础标签:针对数据的存储情况、访问情况、安全等级等进行打标。
- 数仓标签:针对数据是增量还是全量、是否可再生、数据的生命周期来进行标签化处理
- 业务标签:根据数据归属的主题域、产品线、业务类型为数据打上不同的标签。
- 潜在标签:这类标签主要是为了说明数据潜在的应用场景,比如社交、媒体、广告、电商、金融等
利用Data Profile,不仅可以节约研发人员的时间成本,同时对阿里巴巴内部的非研发人员来说,也可以更直观地理解数据、利用数据,从而提升数据的研发效率。
4.2. 元数据门户
阿里巴巴基于元数据产出的最重要的产品是元数据门户。元数据门户致力打造一站式的数据管理平台、高效的一体化数据市场。包括“前台”和“后台”,“前台”产品为数据地图,定位消费市场,实现检索数据、理解数据等“找数据”需求;“后台”产品为数据管理,定位于一站式数据管理,实现成本管理、安全管理、质量管理等。
数据地图围绕数据搜索,服务于数据分析、数据开发、数据挖掘算法工程师、数据运营等数据表的使用者和拥有者,提供方便快捷的数据搜索服务,拥有功能强大的血缘信息及影响分析,利用表使用说明、评价反馈、表收藏及精品表机制,为用户浮现高质量、高保障的目标数据。比如在进行数据分析前,使用数据地图进行关键词搜索,帮助快速缩小范围,找到对应的数据;比如使用数据地图根据表名直接查看表详情,快速查阅明细信息,掌握使用规则;比如通过数据地图的血缘分析可以查看每个数据表的来源、去向,并查看每个表及字段的加工逻辑。
数据管理平台围绕数据管理,服务于个人开发者、BU管理者、系统管理员等用户,提供个人和BU全局资产管理、成本管理和质量管理等。针对个人开发者,主要包括计算费用和健康分管理、存储费用和健康分管理,并提供优化建议和优化接口;针对BU管理者和管理员,主要提供BU、应用、集群等全局资产消耗概览、分析和预测。
4.3. 应用链路分析
对于某个数据计算任务或表,其重要程度如何,是否还有下游在使用,是否可以下线;阿里巴巴有这么多数据产品,都依赖哪些MaxCompute表,对这些MaxCompute表是否需要根据应用的重要程度进行资源、运维保障…对于这些问题,我们都可以通过元数据血缘来分析产品及应用的链路,通过血缘链路可以清楚地统计到某个产品所用到的数据在计算、存储、质量上存在哪些问题,通过治理优化保障产品数据的稳定性。
通过应用链路分析,产出表级血缘、字段血缘和表的应用血缘。其中表级血缘主要有两种计算方式:一种是通过MaxCompute任务日志进行解析;一种是根据任务依赖进行解析。
其中难度最大的是表的应用血缘解析,其依赖不同的应用。按照应用和物理表的配置关系,可以分为配置型和无配置型。对于数据报表、集市等应用,其数据源直接或间接使用MaxCompute数据且有元数据配置依赖关系,通过配置元数据,可以获取MaxCompute物理表和具体的报表、集市等应用的血缘关系。对于生意参谋等数据产品,其数据源通过数据同步方式同步至MySQL、HBase等数据库,间接使用MaxCompute数据且无配置产品和MySQL、HBase等物理数据源的依赖关系,导致无法通过配置元数据解析MaxCompute数据和数据产品的关系。主要通过统一的应用日志打点SDK来解决此问题,可以做到配置化、应用无痕化。常见的应用链路分析应用主要有影响分析、重要性分析、下线分析链路分析、寻根溯源、故障排查等。
4.4. 数据建模
传统的数据仓库建模一般采用经验建模的方式,效率较低且不准确。基于现有底层数据已经有下游使用的情况,我们可以通过下游所使用的元数据指导数据参考建模。通过元数据驱动的数据仓库模型建设,可以在一定程度上解决此问题,提高数据仓库建模的数据化指导,提升建模效率。
所使用的元数据主要有:
- 表的基础元数据,包括下游情况、查询次数、关联次数、聚合次数、产出时间等。
- 表的关联关系元数据,包括关联表、关联类型、关联字段、关联次数等。
- 表的字段的基础元数据,包括字段名称、字段注释、查询次数、关联次数、聚合次数、过滤次数等。
其中查询指SQL的SELECT,关联指SQL的JOIN,聚合指SQL的GROUP BY,过滤指SQL的WHERE。
在星形模型设计过程中,可能类似于如下使用元数据。
- 基于下游使用中关联次数大于某个阈值的表或查询次数大于某个阈值的表等元数据信息,筛选用于数据模型建设的表。
- 基于表的字段元数据,如字段中的时间字段、字段在下游使用中的过滤次数等,选择业务过程标识字段。
- 基于主从表的关联关系、关联次数,确定和主表关联的从表。
- 基于主从表的字段使用情况,如字段的查询次数、过滤次数、关联次数、聚合次数等,确定哪些字段进入目标模型。
4.5. 驱动ETL开发
通过元数据,指导ETL工作,提高ETL的效率。在“数据同步”章节中,我们提到了通过元数据驱动一键、批量高效数据同步的OneClick。OneClick覆盖的另一个场景是存量数据日常维护,其主要功能如图12.3中的“数据运维”部分所示。
我们可以通过Data Profile得到数据的下游任务依赖情况、最近被读写的次数、数据是否可再生、每天消耗的存储计算等,这些信息足以让我们判断数据是否可以下线;如果根据一些规则判断可以下线,则会通过OneClick触发一个数据下线的工作任务流,数据Owner可能只需要点击提交按钮,删除数据、删除元数据、下线调度任务、下线DQC监控等一系列操作就会自动在后台执行完成。
博文参考
- 《阿里大数据实战》