陈绍金生旺主编
生产平台|
01
元数据位置
这里主要讲一下数据治理和元数据的整体关系,华为数据治理里有一句话:“清洁数据成就卓越运营,智能数据驱动有效增长”,这解释了为什么企业要做数据治理。在数字经济蓬勃发展的今天,各家企业都投入了大量的精力去做这些事情。数据治理的核心目标是获得“干净”的数据。元数据是数据治理的基础设施,在整个数据治理中起着非常核心的作用过程。
首先,企业数据治理普遍面临的问题,也就是数据治理需要解决的问题有以下几点:
以上就是企业数据治理过程中需要解决的问题,那么元数据在数据治理过程中到底解决了哪些问题呢?我们最终将企业数据治理的问题抽象归纳为四个方向:成本、效率、质量、安全。
以上就是数据治理和元数据的关系。
02
元数据治理体系
这部分主要介绍如何保障核心数据、如何治理主数据、如何建立数据规范体系、以及整体产品架构四个方面。
1. 核心数据保护
核心数据保护主要是为了解决数据质量和时效性不高的问题,现在每个企业的数据量都相当大,在海量的数据中必须保证核心数据的有效性,考虑到每个企业的资源有限,不可能保证所有任务都得到保障,核心任务必须先保障。如何保障核心数据的识别,以及后续的保障措施流程?易服智通过以下四个步骤逐步推进并完成:
①首先,业务部门把他们的核心数据表作为我们的要求之一提交到数据仓库中。
②数据仓库根据元数据识别并分析上游环节的依赖关系,对上游任务所消耗的资源进行整体评估,评估完成后交由大数据部门审核。
③审核通过后,此任务将作为更高优先级的任务处理,并以整个链路的优先级为核心进行调整。
④运维团队每周7天、每天24小时值班,保障核心任务的计算时效性和整个数据输出的数据质量。
在这个过程中,除了流程管控之外,还需要有资源分配方案,从三个方面简单介绍一下:
①项目空间管理:支持多租户资源分配,控制各个空间的队列资源及优先级,以及最早任务开始时间,保证整个任务的有序进行。
② 队列划分:一般分为核心、重要、一般三个队列,核心队列由数据仓库统一管理,业务组可以只将任务调整到重要和一般队列。
③资源策略:5点之前所有资源优先给核心队列供给,因为作为电信子公司,集团上报的一些数据时效性要求非常高,这类核心任务会优先给核心队列。分配资源。5点之后会根据任务的优先级和依赖性来分配资源。这是一个整体的资源分配方案。
2.主数据治理
主要是为了解决部分核心数据难以识别、数据一致性较差的问题,在易服智我们希望通过主数据的治理,实现同源多用,因为主数据一般只有一个核心数据源,然后多个系统引用它,保证数据源头的一致性。另外,主数据是核心数据,需要提高其数据质量,逐步建立主数据的权威性。主数据的治理也分为四个步骤:
①主数据定义与标识:数据部门统一确定唯一数据源,是唯一来源,也是最权威的来源。
②质量控制与改进:主数据确定之后,需要对其数据质量进行审计,提高主数据的数据质量。如果源头的数据质量有问题,那么我们肯定会出现更大的问题在下游使用时,所以必须保证主数据与源头的系统数据一致。
③主数据集成与服务:掌控了以上两个步骤之后,就要进行主数据集成与服务,推动主数据在各个业务系统中应用与消费的转型过程。
④主数据服务与消费:建立主数据后,要保证后续新建系统和已有系统按照我们的要求和流程进行改造,如果新增系统不允许自建主数据,主数据必须引用,利用IT协同,实现数据集成、服务链路打通。
3.建立数据标准化体系
数据治理的成本比较高,如果没有标准约束,数据治理往往会“开头清楚,结尾混乱”——治理完了之后,数据又乱了,整个数据治理会很难维持,另外数据安全怎么保障,需要一些数据安全相关的标准,所以基于这个背景我们构建了一整套数据标准体系。
易付宝整个数据链条从生产系统模块的DB库抽取出来,到大数据的数据仓库模块,首先到达ODS层,然后依次到达DWD层、DWS层、DWM层。数据仓库把数据进行整合和管理,提供给业务团队做报表展示、业务分析、数据探索、业务应用、数据消费,这是整个数据链的过程。
一般而言,数据治理的核心肯定是在数据仓库和消费端,但要想保证数据的完整性,避免数据“头清尾乱”,数据治理的源系统必须生产也要有相应的约束。整个数据规范体系是针对整个生产链条的,从生产系统->大数据端->消费系统应用,都需要统一的规范。这个规范可以分为两个大方向:
第一是基础数据规范,包括主数据标准、元数据标准、数据开发规范。
第二个方面是我们的数据安全规范,这个规范是基于我们数据的分类定级标准,在这个基础上我们有数据安全规范,包括我们数据的存储、使用、传输相关的一些要求,还有一些要求对于数据权限的管控,制定了相应的规范之后,还需要有强有力的数据质量审计和通报机制,确保规范的落实。
保证数据整体清洁,还要从源头把控数据生成质量,坚持生产源头并行治理,从三个方向做好:
①数据安全治理(存储、传输、使用)。
②生产元数据治理(库表字段统一命名标准)。如果无法统一,生产端也得有一套对应的标准,而不是让我们的开发人员随意命名他们的库和表。
③主数据的识别与应用。主数据在数据仓库中的应用是一个方面,但更多的时候它在生产中各个应用系统中也广泛应用,所以这一点必须提前掌握。
4. 产品架构
我之前跟大家介绍过元数据治理体系,支撑这个治理体系的落地,需要我们产品能力的支撑。我简单讲一下基于元数据的整体架构视图,分为三层:
03
元数据平台技术介绍
1. 元数据设计理念
2003年和2004年,谷歌发布了被称为大数据三驾马车的三篇重要论文,分别是GFS、。正是谷歌的“三驾马车”拉开了大数据时代的序幕。2016年,谷歌还发表了一篇论文,题为“ :的” [1],从多个角度介绍了内部的元数据管理体系。
架构如上图,数据存储在其中,并以此为基础对外提供查询、监控、沿袭关系、展示等服务。
数据类别如表所示:包括基本元数据、基于内容的元数据、谱系数据等。
通过本文我们总结出以下几点:
① 它是一个 post-hoc 系统,也就是后处理系统。所谓后处理系统,是指在用户创建和更新数据后,收集元数据,而不干扰用户的正常使用。不过,论文中也提到在工作中他希望未来用户在创建和更新数据时能够注册元数据。
② 使用 is 作为元数据的存储介质,开源实现,为什么要用它呢?因为它有一个很重要的特点:" ",所谓的 " ",不区分 和 ,可以直接写入带时间戳的数据属性,大大缩短了元数据的同步时间。
③存在大量的批处理任务,包括元数据信息的离线收集、元数据信息的离线处理等。
④ 构建评分机制,对用户的搜索结果进行排序。的评分机制比较完善,会根据表格属性、类别、血缘关系、用户评分等多个维度对搜索结果进行排序。
2.架构设计
我们以本文为设计依据,结合公司的实际情况,在实施过程中也参考了行业内多个开源平台。上图为元数据平台的架构图,主要包括分为三层:
① 存储层
采用不同的存储系统来存储不同的数据,首先存储各种元数据信息;其次存储索引信息,用于搜索;最后采用图数据库来存储血缘关系信息。
②服务层
利用存储的各类数据信息提供服务,如元数据平台的表查询、表与字段关系展示与分析等。同时向包括ETL平台、BI平台、人工智能平台。
③ 接收层
适配不同的数据源,从数据源收集元数据信息并进行处理。
3.元数据模型
元数据主要有四种类型:
① 基本元数据
主要包括表名,类型,大小,文件个数,最后修改时间等,这些元数据一般直接从数据源中获取并直接写入其中。
②资产元数据
主要包括表的一些业务描述,包括业务域,层次,表等,这些内容在生产过程中通常由开发人员手动维护。
③安全元数据
主要包括权限信息、分类定级、是否含有隐私数据等,这些数据通常是根据相关法律法规、公司规定来确定表格的数据内容。
④ 血统元数据
包含上游表和下游表,通常由数据同步、数据处理任务产生。
除了这四类数据之外,我们还有一些衍生的元数据:包括查询时间,变更记录等。
4. 元数据收集
元数据采集平台会适配不同的数据源,开发不同的采集插件,采集插件采集元数据后会推送到消息队列中供下游服务处理,服务收到消息后会直接写入,并对比元数据,判断是否有新增或者删除,若有则将对应的变更推送到消息队列中,下游服务收到消息后,更新对应的索引。
5. 全链路血统
上文提到,血缘数据通常由数据同步任务和数据处理任务产生,对于数据同步任务,相关平台可以直接将相关血缘信息推送到消息队列,平台收到消息后进行处理并存储在图数据库中,对于数据处理任务,我们通过钩子机制,分析计算引擎的执行计划,从而获取字段的血缘关系,推送到消息队列进行处理。
04
未来展望
规划主要有三个方面:
第一是支持多源异构数据的管理。目前大部分都是基于结构化数据,包括我们的数据源是Hive,这个数据源就是存储结构化数据的。除了结构化数据,我们的公司未来会有更多的非结构化数据,比如图片、声音、文本等,这些数据通常存储在分布式存储系统(比如Ceph)中,而这些分布式存储系统的元数据也需要进行管理。
第二是多集群跨DC容灾,作为存储数据的元数据平台,需要考虑自身的容灾问题,然后进行架构升级。
第三是智能推荐,除了餐桌搜索,还可以通过推荐的方式,帮助用户更快、更好、更方便的找到自己想要的餐桌。
引用:
[1] Alon, Flip Korn, F. Noy, , , Roy, & (2016)。:基于数据。
05
问答环节
Q1:核心数据是指主数据吗?
A1:核心数据和主数据是有区别的,核心数据的定义是基于业务的,在生产使用过程中,我们根据最终业务方来定义,比如核心KPI的某个指标部门的绩效是业务非常核心的数据,这个业务核心指标的结果表可以定位一个核心数据,我们在做这个链路保障的时候,一定要把这个指标表对应的链路数据和所有上游将数据链接到核心数据中进行优先级监管。这是针对核心数据的。主数据的定义是跨多个系统引用,多个系统需要使用相同的数据;例如我们的员工数据,那么我们可能在各个数据平台的系统中都使用这个员工数据,那么这个员工数据本身就是主数据,它和核心数据是从两个维度来表达的,不知道我的解释能不能回答这位同学的问题。
Q2:整个任务链的优先级是不是意味着离线处理、实时处理、资源分配都优先于其他任务?
A2:这个任务优先级主要针对离线任务,因为实时任务没有优先级的概念,数据一到就立刻计算,所以没有优先级的概念,必须预留资源给一直在进行计算。对于离线任务,由于不同任务节点之间存在依赖关系,因此优先考虑离线任务为主。
Q3:整个核心任务的识别是自动的吗?
A3:核心任务的识别不是自动的,核心任务可以从两个角度来讨论,第一是哪些表、哪些结果任务需要优先处理,这个是业务上报的,需要业务审核通过才能生效。大数据仓库的同事们,这是一个手动的过程控制,但是,例如,如果将某个指标的结果表作为核心任务节点,则当前节点和所有上游节点任务都会调整为高优先级,这个调整过程是自动的。但是,识别哪些是核心数据却不是自动的。
Q4:数据安全治理主要包括哪些内容?
A4:数据安全治理可能每个公司都不一样,我们来谈谈易付支付的实际情况。数据安全治理包括数据安全规范的建立,数据存储加密改造,包括一些敏感的加密存储,还有一些数据运营管理;包括数据的使用和下载,比如数据的下载,这是一个非常高风险的操作。我们会建立一个统一的下载中心,所有平台的数据下载都必须通过这个平台进行下载。在这个平台上,数据的管理和安全审计会做的很好。当然有些公司还有第四个板块,就是合作数据的管理。如果要跟第三方合作数据,这个数据合规吗?在这个层面上,如果公司也需要,是一个数据整合的过程,同时也有一些安全性、合规性的要求。一般数据安全治理会从这四个方向去做。
Q5:是否使用元数据收集?
A5:跟实时采集类似,比如元数据变更。主要分为两部分:第一部分是离线采集,其实就是一个批处理的过程。以HIVE为例,我们的批处理可能参考了批量收集HIVE数据库中的数据信息,在一段比较长的时间内进行存储。然后,比如它的元数据实时更新,我们就会收到相应的数据,然后将其作为实时更新。所以其实采集分为两个部分,一个是实时采集,一个是离线采集;我们的离线采集是直接读取元数据数据库进行采集;而实时采集就和你说的差不多了,因为例如 HIVE 实际上有 HIVE 的服务通知机制来实现它。
Q6: 原始数据是怎样存在的?表结构如何设计?
A6:我其实可以建议他去了解一下相关的原理,因为它其实就是kv形式的存储,它并不是关系型存储数据库,它有一个CF()的概念,而且在它下面还有一个。除了 ppt 中提到的“盲写”特性,无论是否更新,都可以直接写入特征;还有一种特性,可以通过数据插入直接更新。也就是说,如果类似于,我想添加一个字段来更改表结构,并执行 DDL 操作来更新它。但这不是必须的。它包含的内容取决于您的数据。换句话说,如果您的数据中有这个,它会自动帮你添加,不需要你特意设计它的表结构。也就是说,只要cf设计好了,那么cf下面有些表的某些字段信息就依赖于我们插入的数据,这取决于元数据平台的具体设计。这也是一个比较好的特性。