元数据是关于数据的组织、数据域及其关系的信息,简言之,元数据就是关于数据的数据。(一文读懂元数据,详见这篇文章:这是我见过把元数据解释的最通俗易懂的文章了
快手在大数据平台建设发展过程中也面临了不少问题,而很多问题需要通过构建元数据管理体系来辅助解决,主要集中在以下几个方面:
  • 怎样找到需要的数据:面对海量的数据资产,在数据加工和使用过程中如何快速找到所需要的数据?
  • 如何梳理出上下游关系:随着业务快速发展,数据生产链路逐渐变长,生产关系越来越复杂,如何准确高效的梳理出数据间、任务间的血缘关系,识别出关键生产链路?
  • 数据治理靠什么来驱动:如何驱动资源治理、规范治理等,以及如何衡量治理效果?
  • 数据资产的管理问题:海量的数据资产的归属、分级分类,识别隐私数据等管理问题如何解决?
早期阶段(2018年以前)
  • 只有Hive一种引擎,主要使用HiveETL任务进行数据加工。
  • 数据资产规模不大,有数千张Hive表,过千的生产任务。
  • 通过PostHook消息将Hive的元数据同步到Mysql一份,提供简单的查询。
发展期阶段(2018年~2019年)
  • 多种计算引擎加入,业务快速发展,表的数量、任务的数量迅速膨胀,找数、管理需求出现。
  • 生产链路变长,资源有限,需要任务分级,人工维护合理的优先级非常困难,通过PostHook消息构建离线血缘关系识别核心生产链路。
  • 建设元数据管理系统,引入了ES构建搜索索引,支持数据资产名,描述信息等的搜索。
现状(2020年之后)
  • 自研平台纷纷登场,元数据台接入了超过十种数据资产,管理十万级别生产任务、几十万级别的表。
  • 存储、计算资源紧张,建设元数据离线仓库支持数据治理等。
  • 业务发展节奏加快,对实时性要求也变高了,提供基于SQL解析的实时全链路血缘构建及查询能力。
  • 新人加入团队的速度非常夸张,需要知识沉淀,通过数据地图支持分类检索、案例分享等功能进行知识沉淀。
下图是针对快手大数据生产过程进行梳理绘制的,图中绿色的点代表数据节点,蓝色的点代表生产任务,黄色的点代表逻辑资产。
生产过程主要分为三个步骤,分别是:采集、加工、消费。可以看到涉及的数据资产种类还是非常多的,并且其间的关系也非常复杂
想要管理众多元数据,需要一套通用的抽象方法和管理方法,快手对元数据进行了抽象,主要涉及以下关键概念:
其中关于实体、属性、关系、URN的具体说明和示例如下表所示:
对于每种类型的元数据,都有不同的属性,为了便于管理,快手按照元数据属性的来源及用途,对常见的元数据属性分成了四类:
其中关于基础元数据、资产元数据、安全元数据、衍生元数据的具体说明和示例如下表所示:
快手元数据系统整体分为接收层,服务层,存储层。左右两侧分别是主要接入方和应用方,接入方主要包括了大数据引擎、管理工具、开发平台及工具,应用方主要包括数据地图、开发平台、治理平台等。

  • 接入层:适配不同元数据生产方,转换成标准定义,输出全种类实体、关系变更消息。
  • 服务层:基于存储层提供单点、复杂查询服务,基于分析引擎提供分析服务。
  • 存储层:基于图模型的实体、关系的存储与查询,支持统计与分析能力。
结合了大数据生产的特点和常规搜索引擎的思路,快手构建了基于元数据系统的数据资产搜索能力。通过元数据系统对相关元数据信息进行采集,转换成标准的元数据变更消息,通过这个消息以数据资产的粒度实时构建用于搜索的元数据索引,索引中包含数据资产的几部分关键信息用于召回:
有了索引之后,就可以根据搜索关键词从索引中召回相关的数据资产,并从内容的相关性度给了一个粗排序,接下来要做的是精排序,这里目前我们主要有三类排序规则:
  • 元信息完善度:资产类元数据属性的填写完整度,主要会考虑一些关键信息是否完备。
  • 依赖数量:下游依赖数量,需要根据数据血缘关系进行统计。
  • 运营规则:是否新模型,是否临时表。
元数据中的血缘关系在数据生产加工、数据治理中也有广泛的应用场景。下图是通过一个简单的例子介绍血缘是如何构建起来的。主要会使用到元数据中表示关系的属性,例如输入、输出、绑定、关联等。
为了构建全链路血缘,快手对整个数据平台生产的生产关系做了梳理,主要涉及到以下几种生产过程:
  • 原始数据通过数据同步任务同步到数据仓库中。
  • 数据仓库中离线定时任务进行加工,也会有数据同步任务进行引擎间的同步。
  • 应用系统通过数据同步、绑定等方式进行数据的消费。
为了收集众多种类的关系,需要对接不同的系统,我们将关系来源进行归纳,主要分为两种进行接入:

  • 数据生产任务的生命周期事件:离线调度任务、数据同步任务等的上线、更新、下线等。
  • 自建平台生产关系:指标模型管理平台、报表平台等自研平台主动上报的生产关系或关联关系。
接收到事件后会由血缘解析模块对事件进行解析,主要会通过SQL或者用户配置解析出任务的输入输出关系,如果是SQL类型的任务,还会更近一步基于逻辑执行计划解析出字段级别依赖。
通过血缘解析服务解析后,将关系经过存储层存储到图引擎来提供查询。查询功能主要包括:数据血缘层级、任务血缘层级、生产任务关系、全量上/下游,目前血缘服务覆盖支持的使用场景:
  1. 血缘查询:在数据地图中对某个数据资产的上下游进行树形展开后的结果进行展示,帮助数据开发同学、数据分析同学高效的找出数据的来源,数据的依赖方。
  2. 优先级推导:基线系统根据生产任务所属基线的优先级进行上游任务的优先级推导,使用血缘关系作为推导的依据,以便保障核心链路的稳定产出。
  3. 下线检测:在下线数据表、下线任务前对是否含有下游进行检测。
在数据治理场景中,经常会遇到以下几个问题:
快手分别在数据规范、模型设计、产品交付、资源利用四个方向制定了可量化的指标体系,对治理项进行不同维度的打分,再根据不同指标的权重进行汇总,给出一个方向的总分,来评估个人或者团队在各个方向上的规范程度,最终以榜单的形式进行展示,来促进数据开发持续提升数据规范性。
除了上面讲的应用场景外,元数据还有以下应用场景:

  • 元数据查询:开发平台、指标模型管理、BI工具等通过元数据服务查询库表信息。
  • 资产管理:通过系统采集的元数据信息,对数据资产进行集中管理,设置生命周期、安全等级等关键属性。
  • 影响分析:支持查询当前节点全部下游,支持变更通知模块根据影响范围进行变更消息的发送。
  • 价值评估:数据资产价值评估模型通过元数据中心提供的丰富的元数据得以落地。

快手对于元数据的未来规划主要聚焦在以下4个方面:

  • 更好的搜索体验:针对大数据生产场景,数据资产间存在各种关系,通过图引擎的查询能力加持搜索功能,提供更好的搜索体验。
  • 高质量元数据:在接入更全面的元数据内容同时,不断提高元数据质量。
  • 离线分析能力:基于新一代元数据存储引擎提供离线元数据分析能力,快速支持数据治理等场景。
  • 更细粒度血缘:目前已经提供了字段血缘甚至亚字段血缘的解析能力,但是这部分的准确性及如何在实际场景中发挥价值还需要持续进行探索。
本文整理自《快手元数据平台化建设及应用场景》,关注本公众号,后台回复“快手”,即可下载25页PPT全文。
本文来源快手,作者薛言
点击文末阅读原文,获取更多干货好文
觉得本文有用,欢迎转发分享,谢谢
<END>
大家都在看:
继续阅读
阅读原文