目录

  • 1. 概述
  • 2. 各模块介绍
  • 2.1 Metadata Store
  • 2.2 Metadata Models
  • 2.3 Ingestion Framework
  • 2.4 GraphQL API
  • 2.5 User Interface
  • 3. Ingestion Framework的架构
  • 3.1 Metadata Change Event(MCE)
  • 3.2 Pull-based Integration
  • 3.3 Push-based Integration
  • 3.4 Applier(mce-consumer)
  • 4. Datahub Serivce Tier架构
  • 4.1 Metadata Storage
  • 4.2 Metadata Commit Log Stream(MAE)
  • 4.3 Metadata Index Applier (mae-consumer-job)
  • 4.4 Metadata Query Serving


1. 概述

Datahub的采用了model-first的架构理念,通过提供一个通用的元数据管理模型,再通过插件的方式集成各种数据平台,进行元数据的导入。整体的架构如下:

元数据管理系统的架构 元数据管理框架_架构


该架构的优点有2个:

  1. 元数据同步方式多样:可以使用Rest、GraphQL API-s、Avro API(从Kafka消费元数据)
  2. 数据平台的元数据更改可以实时的被同步到Datahub;在Datahub对元数据进行更改,可以实时的在数据平台进行更新

2. 各模块介绍

2.1 Metadata Store

用于储存Metadata Graph的Entities和Aspects(关系)。同时提供插入和查询API。其中储存由MySQL、Elasticsearch、Kafka负责。Rest API由Java Spring负责

元数据管理系统的架构 元数据管理框架_架构_02

2.2 Metadata Models

元数据模型采用PDL建模语言进行建模。分为Entity、Aspects、Relationships。其中Entity表示一个实体(如果数据库的一个表),每个实体实例都有一个唯一标识符;Aspects表示实体实例的描述、标签等;Relationships表示不同实体实例的关系

元数据管理系统的架构 元数据管理框架_架构_03

2.3 Ingestion Framework

元数据导入框架通过插件(python库)的方式,集成到Datahub系统。可以从不同的数据平台将元数据,以Rest API直接导入,或将元数据生产到Kafka,再从Kafka消费导入到Datahub

元数据导入只需定义一个YAML文件,并执行datahub元数据导入命令

元数据管理系统的架构 元数据管理框架_架构_04

2.4 GraphQL API

GraphQL API提供了一个强类型的、面向Entiry的API,通过GraphQL API与储存的元数据进行交互

元数据管理系统的架构 元数据管理框架_Datahub_05

2.5 User Interface

DataHub提供一个React UI,方便用户进行元数据的管理

元数据管理系统的架构 元数据管理框架_Datahub_06

3. Ingestion Framework的架构

元数据管理系统的架构 元数据管理框架_Datahub_07


DataHub支持Push、Pull、同步和异步的元数据导入

3.1 Metadata Change Event(MCE)

MCE是元数据导入的中心。各种数据平台的元数据的实时变更,发送到MCE(由Kafka负责),这是一种异步元数据同步。也可以直接将数据平台的元数据通过HTTP方式发送到Datahub,这是一种同步元数据导入

3.2 Pull-based Integration

Datahub通过基于Python的metadata-ingestion系统,从不同的数据平台Pull元数据。然后将元数据Push到Kafka(MCE)或直接Push到Datahub。还可以从Airflow调度系统同步元数据和血缘关系

3.3 Push-based Integration

可以向Kafka Push一个元数据变更事件(MCE),或通过HTTP Push数据到Datahub。DataHub还提供了一些简单的Python emitters ,将其集成到我们自己的系统中,以便获取我们自己的系统元数据

3.4 Applier(mce-consumer)

消费Kafka的元数据消息,并转换成Datahub的元数据储存格式,再同步到Datahub

4. Datahub Serivce Tier架构

元数据管理系统的架构 元数据管理框架_元数据管理_08


主要的服务是datahub-gms,它提供了一个REST API和一个GraphQL API对元数据进行CRUD操作,还提供支持二级索引、全文搜索的搜索查询,和血缘关系的图数据库查询API

4.1 Metadata Storage

储存元数据的数据库,如Mysql、Postgresql、Couchbase

4.2 Metadata Commit Log Stream(MAE)

当将元数据更改更新到Metadata Storage中,Datahub Service Tier还会将该更改事件发送到Kafka

4.3 Metadata Index Applier (mae-consumer-job)

mae-consumer-job消费MAE(Kafka)中的数据,然后将更改事件流更新打elastic和neo4j,并生成相应的search index和graph index

4.4 Metadata Query Serving

基于主键的元数据读取,是从Data store数据库读取的。基于二级索引的元数据读取和全文搜索的元数据读取,是从elastic数据库读取的。基于血缘关系的图查询是从neo4j数据库读取的