写点什么

元数据管理服务分析报告

发布于: 2 小时前

元数据概念

元数据的定义是“关于数据的数据”,元数据与数据的关系就像数据与自然界的关系,数据反映了真实世界的交易、事件、对象和关系,而元数据则反映了数据的交易、事件、对象和关系等。简单来说,只要能够用来描述某个数据的,都可以认为是元数据。元数据信息可以分为两个层面:微观技术层面和宏观描述层面。

技术层面主要为计算引擎和存储服务,比如提供 SQL 引擎 CBO 优化的基础统计信息。宏观描述层面主要是对数据采集、存储、加工和展现等数据全生命周期的描述信息,帮助用户理解数据关系和相关属性。元数据管理工具可以了解数据资产分布及产生过程。

挑战与现状

元数据管理面向数据生态要支持丰富的数据集成工具对接,面向数据湖存储要进行完善的数据管理,面向分析引擎要能够提供可靠的元数据服务。元数据管理如此重要,但是当前开源的方案不够成熟。

挑战:

  • 有 10 来个数据存储系统,每种都去对接适配,每次都要配置账密、路径,真麻烦,有没有统一的视图?

  • 一个有 200 个字段的 CSV 文件,手动写出 200 个字段的 DDL 真的好累?JSON 添加了字段每次都需要手动处理下吗?

  • 我的业务数据,是否有被其他同学删库跑路的风险?

  • 分区太多了,每次分析在读取分区上居然占用了那么多时间?

  • .....


  • 这些问题其实都可以通过完善的元数据管理系统来解决,从元数据管理的视角可以总结为:

  • 如何构建数据的统一管理视图。

  • 如何构建多租户的权限管理。

  • 如何自动化的构建元数据。

  • 如何提供面向分析的优化能力。

针对这些问题对如下主流元数据管理组件进行了分析:Hive Metastore,Aliyun DLA Meta,AWS Glue Data Catalog。


Aliyun DLA Meta

阿里云云原生数据湖分析服务 DLA 的元数据管理,支持统一的多租户元数据管理视图;数据模型兼容 Hive Metastore;提供阿里云 OpenAPI、Client、JDBC 三种开放模式;同时提供元数据自动发现服务一键异步构建元数据。下面是各个模块的介绍:


  • 统一元数据视图:支持 15+中数据源,OSS、HDFS、DB、DW 等;并兼容 Hive Metastore 的数据模型,比如 Schema、View、UDF、Table、Partition、Serde 等,友好对接 Spark、Hadoop、Hudi 等生态;

  • 丰富的开放模式:支持阿里云 OpenAPi、Client、JDBC 三种接口开放模式,方便生态工具及业务集成 DLA Meta,比如可以开发 Sqoop 元数据插件对接 OpenAPI,同步数据时构建元数据;目前开源 Apache Hudi 支持通过 JDBC 方式对接 DLA Meta;DLA 内置的 Serverless Spark、Presto、Hudi 支持通过 Client 模式对接 DLA Meta;

  • 支持多租户及权限控制:基于 UID 的多租户机制进行权限的隔离,通过 GRANT&REVOKE 进行账号间的权限管理。

  • 支持水平扩展:为了满足海量元数据的管理,服务本身是可以水平扩展,同时底层使用 RDS&PolarDB 的库表拆分技术,支持存储的扩展。

  • 元数据发现服务:当数据入湖时没有关联元数据,可以通过元数据发现服务一键自动关联元数据。

  • 填充元数据的方案包括外表关联,数据入湖并管理元数据,元数据发现服务。

DLA Meta 架构



DLA Meta 实践

DLA 自动发现 Schema

DLA 支持元信息的自动发现,以 OSS 数据源为例:


OSS 数据源有两种数据发现模式:数仓模式和自由模式

数仓模式是将 OSS 上的数据文件构建为可以数据分析的标准数仓,对 OSS 路径格式有一定要求,支持“库/表/文件”或者“库/表/分区/.../分区/文件”。

自由模式是发现 OSS 上路径不清晰的文件,期望通过元信息发现,构建可分析的库表分区。

以创建自由模式为例:


配置完成后生成了一个发现任务,可手动或自动执行:


执行之后会在元数据管理页面发现新的 schema


并且在 SQL 编辑器也能看到:


创建其他数据源

DLA 同时支持在 SQL 编辑器内通过 DDL 语句创建新的 Schema。比如创建新的 pg 数据源:

CREATE SCHEMA `postgresql_db` WITH DBPROPERTIES( CATALOG = 'postgresql',  LOCATION = 'jdbc:postgresql://rm-bp1oo49r6j3hvfake.pg.rds.aliyuncs.com:3433/dla_test', USER='dla_test',  PASSWORD='this-is-not-a-real-password',  INSTANCE_ID = 'rm-bp1oo49r6j3hfake',  VPC_ID = 'vpc-bp1adypqlcn535yrfake');
复制代码


目前只支持手动创建,不能自动定时执行。


Hive metastore

介绍

Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据映射成一张数据库表,并提供 SQL 查询功能,底层数据在 HDFS 上,Hive 的本质是将 SQL 语句转化成 MR 任务运行。整体架构:


Hive Meta Store(HMS)是负责 Hive 的元数据存储,主要存储数据库,表,function 的信息,还有统计信息和文件访问权限,目前 HMS 已经成为大数据元数据管理的事实标准,支持 Flink,Spark,Presto 等计算引擎。HMS 通过 DataNucleus(一种 Java 持久化框架)将元数据对象持久化到数据库中。

HMS 部署的的三种模式:

内嵌模式:将元数据保存在本地内嵌的 derby 数据库中,内嵌的 derby 数据库每次只能访问一个数据文件,也就意味着它不支持多会话连接。

本地模式:将元数据保存在本地独立的数据库中(一般是 MySQL),这可以支持多会话连接。

远程模式:把元数据保存在远程独立的 MySQL 数据库中,避免每个客户端都去安装 MySQL 数据库。

HMS 表结构设计分析

Hive metastore 主要是描述数据的属性的信息。它是用来支持如存储位置、历史数据、资源查找、文件记录等功能。

HMS 版本管理

不同的 Hive 版本对应的数据库中的 metastore schema 是不同的,在访问元数据时,会验证 schema 的版本是否和当前 hive 版本一致,目前 hive 默认不支持在数据库直接修改 schema 或直接创建新的 schema,如果数据库中的 schema 和 hive 版本不一致在访问元数据时会出现异常,可以通过设置 hive.metastore.schema.verification 参数。

Hive 提供了 schematool,这个工具能够初始化元数据 schema,和 hive 版本保持一致,另外还可以将

schema 版本升级到当前版本。


HMS 权限与安全管理

HMS 本身没有任何用户认证的,只需要通过 metastore 的 IP 和端口即可连接并读取元数据。

权限方面 HMS 有两种权限管理方式:

  • 基于存储层面的文件权限管理

在基于 HDFS 存储下,可以通过通过目录/文件进行权限管理,但是这种粒度比较粗,因为权限对象是文件,而且这种权限管理方式对于对象存储 minio,S3 等不生效。

  • 基于 Hive 的 SQL 标准授权方式(GRANT/REVOKE)

这种方式提供了更细粒度的权限控制,但是这个是 Hiveserver2 提供的功能,没 HMS 没有关系。


AWS Glue Data Catalog

AWS Glue 是一项完全托管的 ETL(提取、转换和加载)服务,使您能够轻松而经济高效地对数据进行分类、清理和扩充,并在各种数据存储和数据流之间可靠地移动数据。  AWS Glue 包含 AWS Glue Data Catalog、ETL 引擎、AWS 爬网程序和分类器、作业调度系统。

其中 AWS Glue Data Catalog 是中央元数据存储系统,可以在 AWS 云中存储、注释和共享元数据,就像在 Apache Hive 元存储中一样。

AGDC 收集元数据


AGDC 存储了 ETL 的数据源和数据目标相关的元数据,包括 location,schema,运行时的指标数据。元数据一般通过爬虫数据收集到 AGDC 中。

AGDC 通过爬虫程序收集元数据的过程:

  1. 用户需要自定义一个识别器,这个识别器定义了数据 schema,爬虫会根据这个识别器运行,第一次抓取到这种 schema 的数据就直接创建出 schema。

  2. 如果用户没有自定义识别器,可以使用内嵌识别器识别 schema,比如 json 格式。

  3. 爬虫程序自动连接数据存储单位。

  4. 根据抓取到信息推测 schema。

  5. 爬虫程序会将抓取到的信息写到 AGDC 中预先定义的数据库表。


AGDC 实践

S3 数据文件同步到数据目录

前提准备在 S3 上传 csv 数据文件,作为元数据对象。

  1. 创建数据目录的数据库 db_meta,用来存储元数据信息。



2. 创建元信息有两种方式,主动创建和程序抓取。如果采用手动创建的方式,则直接填写目标文件的属性信息。



  1. 如果采用程序抓取的方式,首先创建一个 schema 分类器,用来识别数据文件。



  1. 创建爬网程序,并添加分类器。



  1. 运行爬网程序



  1. 查询爬取结果。



  1. 通过 Athena 验证是否能够看到已经加载的元数据。



元数据权限管理

AWS Glue 是对于 Hive Metastore 的另一个扩展,跟普通 Hive Metastore 不一样的是,Glue 是一个支持多租户的元数据服务 ,不同的用户去调用同样的接口返回的结果是不一样的。而且 Glue 也把授权信息内置到服务里面,不过它提供的方式不是 SQL 标准里面的 grant/revoke 的方式,而是基于 AWS 统一的 IAM 权限策略的方式。

每个 AWS 的资源都归属与某个 AWS 账号所有,创建和访问资源的权限由权限策略进行管理。权限策略 由一个描述谁可以访问哪些内容的 JSON 对象来定义。JSON 对象的语法主要由 AWS Identityand Access Management (IAM) 定义。对资源的权限策略有两种:基于身份的策略(IAM)和基于资源的策略。

下面是一个基于身份的的策略示例,用于授予一个 AWS Glue 操作 (glue:GetTable、GetTables、GetDatabase 和 GetDatabases) 的权限。Resource 值中的通配符字符 (*) 表示获取 数据目录 中某一数据库中的所有表和数据库的名称和详细信息。如果根据资源策略用户还可以访问其他目录,则该用户也会获得对这些资源的访问权限。


下面是一个基于资源的的策略示例,用于授予一个 AWS Glue 操作 (glue、GetTables) 的权限。Resource 值中 表示获取 数据目录 中 table01 表和数据库 db_meta 的名称和详细信息。如果根据资源策略用户还可以访问其他目录,则该用户也会获得对这些资源的访问权限。


AGDC 核心技术汇总

  1. 多种数据源统一视图。

  2. 元数据多租户权限管理,基于 IAM 和资源的策略。

  3. 主动爬取 schema 技术。

总结

从三款元数据管理服务的分析可以得出以下结论:

  1. DLA 和 AGDC 都是基于 HMS,并且兼容 HMS。

  2. DLA 借鉴了 AGDC 的 Schema 自动发现功能,但是并没有完全实现,只支持 OSS 上元数据定时更新。

  3. AGDC 的权限管理最完善,实现了基于身份和资源的策略管理,DLA 还未打通资源和 RAM。

  4. 统一元数据视图,基于 HMS 的服务搭建,支持多种开放协议,Schema 自动发现,多租户权限管理是我们以后元数据管理完善的方向。


引用:

深度 | 面向云原生数据湖的元数据管理技术解析-阿里云开发者社区

AWS Glue

Storage Based Authorization in the Metastore Server

Hive Schema Tool

发布于: 2 小时前阅读数: 3
用户头像

还未添加个人签名 2018.10.30 加入

还未添加个人简介

评论

发布
暂无评论
元数据管理服务分析报告