赞
踩
Datahub的采用了model-first的架构理念,通过提供一个通用的元数据管理模型,再通过插件的方式集成各种数据平台,进行元数据的导入。整体的架构如下:
该架构的优点有2个:
用于储存Metadata Graph的Entities和Aspects(关系)。同时提供插入和查询API。其中储存由MySQL、Elasticsearch、Kafka负责。Rest API由Java Spring负责
元数据模型采用PDL建模语言进行建模。分为Entity、Aspects、Relationships。其中Entity表示一个实体(如果数据库的一个表),每个实体实例都有一个唯一标识符;Aspects表示实体实例的描述、标签等;Relationships表示不同实体实例的关系
元数据导入框架通过插件(python库)的方式,集成到Datahub系统。可以从不同的数据平台将元数据,以Rest API直接导入,或将元数据生产到Kafka,再从Kafka消费导入到Datahub
元数据导入只需定义一个YAML文件,并执行datahub元数据导入命令
GraphQL API提供了一个强类型的、面向Entiry的API,通过GraphQL API与储存的元数据进行交互
DataHub提供一个React UI,方便用户进行元数据的管理
DataHub支持Push、Pull、同步和异步的元数据导入
MCE是元数据导入的中心。各种数据平台的元数据的实时变更,发送到MCE(由Kafka负责),这是一种异步元数据同步。也可以直接将数据平台的元数据通过HTTP方式发送到Datahub,这是一种同步元数据导入
Datahub通过基于Python的metadata-ingestion系统,从不同的数据平台Pull元数据。然后将元数据Push到Kafka(MCE)或直接Push到Datahub。还可以从Airflow调度系统同步元数据和血缘关系
可以向Kafka Push一个元数据变更事件(MCE),或通过HTTP Push数据到Datahub。DataHub还提供了一些简单的Python emitters ,将其集成到我们自己的系统中,以便获取我们自己的系统元数据
消费Kafka的元数据消息,并转换成Datahub的元数据储存格式,再同步到Datahub
主要的服务是datahub-gms,它提供了一个REST API和一个GraphQL API对元数据进行CRUD操作,还提供支持二级索引、全文搜索的搜索查询,和血缘关系的图数据库查询API
储存元数据的数据库,如Mysql、Postgresql、Couchbase
当将元数据更改更新到Metadata Storage中,Datahub Service Tier还会将该更改事件发送到Kafka
mae-consumer-job消费MAE(Kafka)中的数据,然后将更改事件流更新打elastic和neo4j,并生成相应的search index和graph index
基于主键的元数据读取,是从Data store数据库读取的。基于二级索引的元数据读取和全文搜索的元数据读取,是从elastic数据库读取的。基于血缘关系的图查询是从neo4j数据库读取的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。