1. 简介
OpenMetadata 是一个统一的元数据平台,旨在解决现代数据生态系统中数据发现、可观测性和治理的挑战。它提供了一个中央元数据存储库,支持深度列级血缘和无缝团队协作。OpenMetadata 基于开放元数据标准和 API,支持与各种数据服务的连接器,从而实现端到端元数据管理,帮助用户释放数据资产的价值。
2. 核心组件与架构设计
OpenMetadata 主要由四个核心组件构成:
元数据 Schema (Metadata Schemas):这些是基于通用抽象和类型的元数据核心定义和词汇表。它们还允许自定义扩展和属性,以适应不同的用例和领域。
元数据存储 (Metadata Store):这是用于存储和管理元数据图的中央存储库,该元数据图以统一的方式连接数据资产、用户和工具生成的元数据。
元数据 API (Metadata APIs):这些是用于生成和消费元数据的接口,构建在元数据 Schema 之上。它们实现了用户界面和工具、系统和服务与元数据存储的无缝集成。
摄取框架 (Ingestion Framework):这是一个可插拔的框架,用于从各种来源和工具将元数据摄取到元数据存储中。它支持 75+ 种连接器,包括数据仓库、数据库、仪表板服务、消息服务、管道服务等。
从高层设计来看,OpenMetadata 的系统上下文主要涉及以下参与者:
OpenMetadata Consumer (用户):希望探索元数据的最终用户,通过 UI 与 OpenMetadata 交互。
Automated Integration (系统):外部系统,负责创建/消费元数据,通过 API 与 OpenMetadata 集成。
Ingestion Pipelines (系统):元数据摄取管道,使用摄取框架将元数据导入 OpenMetadata。
整个系统通过 UI、API 和摄取框架进行交互,其中 API 是 OpenMetadata 后端的核心接口,摄取框架则负责与各种数据源进行连接和元数据采集。
3. 模块规划
OpenMetadata 的代码仓库结构反映了其模块化的设计。主要模块包括:
.github
:GitHub Actions 工作流和配置。
bin
:可执行脚本。
bootstrap
:引导程序相关文件。
common
:通用工具和库。
conf
:配置文件。
docker
:Docker 相关文件。
ingestion
:元数据摄取相关的代码,包括各种连接器实现。
openmetadata-airflow-apis
:与 Apache Airflow 集成的 API。
openmetadata-clients
:客户端库。
openmetadata-dist
:分发包。
openmetadata-docs
:文档源文件。
openmetadata-sdk
:SDK,包含 Java 相关的元数据定义和客户端。
openmetadata-service
:核心服务,包括元数据存储、API 实现等。
openmetadata-shaded-deps
:阴影依赖。
openmetadata-spec
:元数据 Schema 定义。
openmetadata-ui
:前端用户界面。
这种模块划分使得不同组件可以独立开发和维护,同时也方便了新功能的扩展和集成。
4. 工作原理
OpenMetadata 的工作原理可以概括为以下几个步骤:
元数据定义 (Metadata Definition):OpenMetadata 使用 JSON Schema 来定义其元数据标准。这些 Schema 描述了各种数据资产(如表、主题、仪表板、管道等)的结构和属性,以及它们之间的关系。这种 Schema-first 的方法确保了元数据的一致性和可扩展性。
元数据摄取 (Metadata Ingestion):通过可插拔的摄取框架和各种连接器,OpenMetadata 从不同的数据源(如数据库、数据仓库、BI 工具、消息队列等)采集元数据。摄取过程将源系统的元数据转换为 OpenMetadata 定义的统一格式,并将其存储到元数据存储中。
元数据存储与管理 (Metadata Storage and Management):采集到的元数据被存储在元数据存储中,形成一个元数据图。这个图不仅包含数据资产的详细信息,还记录了它们之间的关系,例如数据血缘、所有权、标签等。后端数据库(如 MySQL 或 PostgreSQL)用于持久化这些元数据。
元数据 API (Metadata API):OpenMetadata 提供了一组丰富的 RESTful API,供用户界面和外部系统访问和操作元数据。所有对元数据的读写操作都应该通过这些 API 进行,以确保数据的一致性和完整性。
元数据消费与应用 (Metadata Consumption and Application):用户可以通过 OpenMetadata 的用户界面进行数据发现、浏览、搜索和协作。平台还提供了数据质量、数据治理、数据可观测性等功能,帮助用户更好地理解和管理数据资产。
5. 数据源扩展流程
OpenMetadata 提供了清晰的指南来开发新的数据源连接器。核心流程包括:
定义 JSON Schema:为新的数据源定义其配置的 JSON Schema。这个 Schema 描述了连接到数据源所需的参数,例如主机名、端口、凭据等。这个 Schema 将用于生成用户界面中的表单,以便用户可以轻松配置连接器。
开发摄取代码:实现实际的元数据摄取逻辑。这通常涉及使用数据源的 API 或客户端库来提取元数据,并将其转换为 OpenMetadata 的实体模型。摄取代码需要处理数据源的特定元数据结构,并将其映射到 OpenMetadata 的通用 Schema。
应用 UI 更改:更新 OpenMetadata 的前端界面,以支持新的连接器。这包括添加新的连接器类型到下拉菜单,并根据第一步中定义的 JSON Schema 动态生成配置表单。
创建 Java ClassConverter (可选):如果新的连接器需要与 OpenMetadata 的 Java 后端进行更深层次的集成,可能需要创建 Java ClassConverter 来处理数据类型转换或特定逻辑。
测试:对新的连接器进行全面的测试,确保其能够正确地连接到数据源,并准确地采集和摄取元数据。
更新文档:为新的连接器编写详细的文档,包括安装说明、配置指南和使用示例。
这个流程强调了 Schema-first 的设计理念,并通过模块化的方式支持新数据源的快速集成。
6. 数据血缘管理原理
OpenMetadata 的数据血缘管理是其核心功能之一,它能够跟踪和可视化数据资产的来源和转换。其原理主要基于以下几点:
列级血缘 (Column-level Lineage):OpenMetadata 不仅支持表级血缘,还支持更细粒度的列级血缘。这意味着它可以跟踪数据从源表的特定列到目标表的特定列的流动和转换。
自动发现与手动编辑:血缘信息可以通过摄取管道自动发现,例如通过解析 SQL 查询或 ETL 工具的日志。同时,OpenMetadata 也提供了用户界面,允许用户手动编辑和补充血缘信息,以处理复杂或无法自动发现的场景。
元数据图表示:血缘信息作为元数据图的一部分存储在元数据存储中。数据资产之间的转换关系被建模为图中的边,从而可以轻松地查询和可视化数据的流动路径。
集成外部血缘工具:OpenMetadata 可以与 OpenLineage 等外部血缘工具集成,从而扩展其血缘发现能力。
7. 元数据发现、采集、质量和治理
OpenMetadata 提供了一套全面的功能来支持元数据生命周期的各个阶段:
元数据发现 (Metadata Discovery):
搜索与探索:用户可以通过关键词搜索、数据关联和高级查询来查找和探索所有数据资产,包括表、主题、仪表板、管道和服务。
数据目录:提供一个集中的数据目录,方便用户浏览和理解组织内的数据资产。
元数据采集 (Metadata Ingestion):
连接器:通过丰富的连接器(支持 75+ 种数据源)自动从各种数据源采集元数据。
可插拔框架:摄取框架是可插拔的,允许用户根据需要开发和集成新的连接器。
元数据质量 (Metadata Quality):
无代码数据质量测试:用户可以定义和运行数据质量测试,并将其分组到测试套件中。测试结果可以在交互式仪表板中查看。
数据剖析 (Data Profiler):提供数据剖析功能,帮助用户了解数据的分布、模式和统计信息,从而发现潜在的数据质量问题。
协作:通过强大的协作功能,使数据质量成为组织内的共同责任。
元数据治理 (Metadata Governance):
数据域与数据产品:用户可以定义数据域和数据产品,并为其分配所有者和利益相关者。
标签与术语表:通过使用标签和术语表对数据资产进行分类,实现统一的元数据管理和治理。
自动化分类:支持强大的自动化功能,自动对数据进行分类。
数据策略与标准:在整个组织中强制执行数据策略和标准。
数据可观测性 (Data Observability):
健康与性能监控:监控数据资产和管道的健康状况和性能,包括数据新鲜度、数据量、数据质量和数据延迟等指标。
警报与通知:为任何异常或故障设置警报和通知。
数据协作 (Data Collaboration):
通知与警报:用户可以获取事件通知、发送警报、添加公告、创建任务和使用会话线程,从而在数据资产上进行沟通、交流和协作。
数据文档 (Data Documentation):
富文本编辑:使用富文本、图像和链接来文档化数据资产和元数据实体。
评论与注释:添加评论和注释,并生成数据字典和数据目录。
8. 总结
OpenMetadata 是一个功能强大且全面的元数据管理平台,其设计理念是开放、可扩展和协作。通过其模块化的架构、Schema-first 的方法以及对元数据生命周期各个阶段的全面支持,OpenMetadata 旨在帮助组织更好地理解、管理和利用其数据资产。其对数据血缘、数据质量和数据治理的深入支持,使其成为现代数据生态系统中不可或缺的工具。
暂无评论内容