DataHub: 现代数据栈的元数据平台的Metadata Ingestion Architecture【元数据摄取架构】讲解

DataHub: 现代数据栈的元数据平台的Metadata Ingestion Architecture【元数据摄取架构】讲解,第1张

DataHub: 现代数据栈的元数据平台的Metadata Ingestion Architecture【元数据摄取架构】讲解

数据治理平台系统文章:

    DataHub: 现代数据栈的元数据平台的入门体验及填坑记录DataHub: 现代数据栈的元数据平台的Serving Architecture【服务体系架构】讲解DataHub: 现代数据栈的元数据平台的metadata Ingestion framework【元数据摄取架构】讲解
架构图

DataHub支持极其灵活的摄取体系结构。元数据摄取支持数据源主动推送、被动拉取两种方式,并支持采用同步或异步方式进行。支持针对30+的数据源的元数据进行摄取,经过转换处理后,通过datahub-rest或datahub-kafka 存储到Datahub GMS中。元数据的摄取和落地到GMS采用插件架构,很容易进行扩展。

详见下图:

中心部分是元数据更改事件(metadata Change Event, MCE),它表示由上游系统中的元数据更改。

MCE可以通过Kafka发送,从源系统进行高度可伸缩的异步发布。还可以将它们通过HTTP服务直接发送到DataHub的GMS,以获得同步的成功/失败响应

metadataChangeEvent (MCE) Consumer Job:MCE Consumer是一个Kafka Streams job。它的主要功能是监听metadataChangeEvent Kafka topic的消息并处理这些消息,并将新的元数据写入DataHub GMS。每次成功更新元数据后,GMS都会触发一个metadataAuditEvent,这个事件被MAE Consumer Job使用。

metadata Index Applier 即 metadataAuditEvent (MAE) Consumer Job:MAE消费者是一个Kafka Streams job。它的主要功能是监听metadataAuditEvent Kafka topic的消息并处理这些消息,将元数据模型中的更改转换为二次搜索和图索引的更新。

集成方式 Pull-based Integration

DataHub附带了一个基于Python的元数据摄取系统【acryl-datahub】,该系统可以连接到不同的数据源并从中提取元数据,然后通过Kafka或HTTP将元数据推送到DataHub存储层。

元数据摄取管道可以与Airflow 集成,以建立预定的摄取或捕捉数据血缘。

摄取任务管理

通过下面的界面,可以针对摄取任务进行管理:新建、编辑、删除、执行摄取任务。

摄取任务通常配置为周期性定时运行,Datahub通过Airflow 进行任务调度

任务执行后,可以取消,执行完成后,点击"DETAILS"按钮可以查看任务执行日志

配置元数据摄取任务

根据数据源的类型,根据元数据摄取向导配置摄取任务。
在配置时,需要指定调度系统的Executor Id。
内置的DataHub Executor Id为“default”。除非配置了自定义执行程序,否则不要更改此选项。

Push-based Integration

只要你可以向Kafka发出元数据更改事件(metadata Change Event, MCE)事件,或者通过HTTP进行REST调用,你就可以将任何系统与DataHub集成。

为了方便起见,DataHub还提供了简单的 Python emitters和 Java emitter,可以将其集成到系统中,根据实际业务需要,发出元数据更改事件(MCE)。

这两个emitters主要用于: 在某些情况下,希望直接构造metadata事件,并使用编程方式将该元数据发送到DataHub

Python emitters

基于Python的元数据摄取系统【acryl-datahub】提供了 REST 和 Kafka emitter API,很容易进行代码集成。
REST Emitter:基于requests 模块进行了一层薄包装,提供了一个通过HTTP发送元数据事件的阻塞接口,主要用于如下2种场景:

当将元数据持久化到DataHub的元数据存储的简单性和确认比元数据发送的吞吐量更重要时,请使用此方法当存在write -after-write场景时使用此方法,例如写元数据然后立即将其读回来。

Kafka Emitter:基于confluent-kafka的SerializingProducer类之上的一个薄包装,提供了一个非阻塞接口,用于向DataHub发送元数据事件,主要用于如下场景:

想要将元数据生产者与datahub元数据服务的正常运行时间解耦时,可以使用Kafka作为一个高可用的消息总线。例如DataHub元数据服务由于计划或计划外的中断而关闭,仍然可以通过将其发送到Kafka来继续从关键任务系统收集元数据当将元数据发送的吞吐量比确认元数据被持久化到DataHub的后端存储更重要时,请使用此方法。

注意:
Kafka Emitter使用Avro序列化metadata事件到Kafka

Java emitter

datahub-client 模块提供了 REST emitter API。
它可以很容易地从基于JVM的系统发出元数据。例如,Spark的数据血缘集成使用Java emitter从Spark作业发出元数据事件。

io.acryl
datahub-client
0.8.24

**Java包目前还不支持Kafka emitter,**但官方已经计划在后续的版本中提供

Internal Components Applying MCE-s to DataHub Service Tier (mce-consumer)

metadataChangeEvent (MCE) Consumer Job:MCE Consumer是一个Kafka Streams job。
它的主要功能是监听metadataChangeEvent Kafka topic的消息,将MCE转换为等效的Pegasus格式,并使用/ingest端点将其发送到DataHub服务层(DataHub -gms)。

每次成功更新元数据后,GMS都会触发一个metadataAuditEvent,这个事件被MAE Consumer Job使用。

详见介绍参见mce-consumer-job

参考

metadata-ingestion

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5719523.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存