一、引言
企业数据平台经历了从数据仓库、数据湖到湖仓一体、实时数仓、Data Mesh 和 AI 数据应用的演进,数据资产的数量、类型和依赖关系都在快速膨胀。
OpenMetadata 正是在这个背景下出现的开源元数据平台,它试图解决的核心问题是把分散在不同系统中的元数据统一建模、统一检索、统一治理。它把数据库、数仓、数据湖、BI、调度系统、消息系统、机器学习平台等数据生态中的元数据接入到统一平台,并围绕数据发现、数据血缘、数据质量、业务术语、标签分类、所有权、数据产品和 API 构建统一的元数据知识图谱。

二、OpenMetadata 是什么
OpenMetadata 是一个开源元数据平台,用于构建可信数据上下文和业务语义的开放平台,服务对象包括人、AI 助手和智能体。它的核心不是单点功能,而是围绕"元数据图谱"组织数据生态中的上下文。
| 层次 | 含义 |
|---|---|
| 数据目录 | 统一展示表、字段、仪表盘、管道、模型、Topic 等资产 |
| 元数据接入平台 | 通过连接器采集多种数据系统的元数据 |
| 数据治理平台 | 管理 Owner、标签、分类、术语表、策略、质量和认证状态 |
| 语义上下文层 | 为用户、应用和 AI 提供经过治理的数据上下文 |
OpenMetadata 支持 120+ connectors,并支持 open metadata standards、semantic search、APIs、SDKs 和 MCP server。这意味着它不仅面向 Web UI 用户,也面向平台集成、自动化治理和 AI 助手场景。
OpenMetadata 的架构可以从"采集、存储、服务、消费"四个环节理解。OpenMetadata 运行时需要应用服务、数据库、搜索引擎和用于采集任务调度的编排服务;生产部署中建议使用外部数据库和搜索引擎,而不是依赖快速启动包中的内置组件。

从数据流看,OpenMetadata 既支持通过连接器周期性拉取元数据,也支持通过 API 推送元数据。其中连接器需要被调度以周期性获取元数据,也可以使用 OpenMetadata APIs 推送元数据。
三、OpenMetadata核心组件
- Metadata Service:OpenMetadata 的后端服务层,负责统一元数据实体、关系、API、权限、事件和业务逻辑。所有 UI 操作、连接器写入、SDK 调用和外部系统集成都需要经过这一层。它的元数据模型不是只围绕表,而是覆盖了现代数据平台中的多类资产。
- Ingestion Framework:OpenMetadata 的元数据采集框架,可以灵活运行在任意编排器上,同时平台也提供了从 UI 部署和管理连接器管道的能力,该能力依赖官方提供的 Airflow 容器;也可以选择 Prefect、Dagster、GitHub workflows 等其他编排器 。
yaml
源系统
|
| connector
v
采集任务
|
| metadata ingestion workflow
v
OpenMetadata API
|
v
元数据实体 + 关系 + 搜索索引
- Metadata Store 与 Search:OpenMetadata 的价值不在于把元数据简单堆到一张表里,而在于保存实体之间的关系;搜索层负责让用户快速发现资产,OpenMetadata 支持 semantic search,使用户和 AI 助手可以按含义搜索,而不只是精确匹配资产名称 。
- UI 与应用生态:OpenMetadata 提供 Web UI,用于数据发现、资产详情查看、血缘分析、质量查看、术语管理、标签治理、协作和配置采集任务。其中MCP 是 OpenMetadata 应用,默认安装,MCP 的出现让 OpenMetadata 从"给人看的数据目录"扩展到"给 AI 用的上下文服务"。
- 元数据图谱:OpenMetadata 的重要设计思想是把元数据建成图,而不是孤立资产列表。一个表不再只是库名、表名和字段集合,它还会连接 Owner、标签、术语、质量测试、血缘上下游、使用情况和下游报表。

四、功能特性
- 数据发现:数据发现是 OpenMetadata 最容易被感知的能力。用户可以在平台中搜索表、字段、仪表盘、管道、模型、Topic、API、存储对象等资产,并查看描述、Owner、标签、业务术语、血缘和质量状态。OpenMetadata 可以覆盖常见离线、湖仓、云数仓和部分实时生态。
- 数据血缘:数据血缘用于理解数据从源头到消费端的流转路径。OpenMetadata 支持 column-level lineage、table-level lineage 和 pipeline lineage,并支持 upstream analysis 与 downstream analysis,用于发现输入来源、数据质量问题、数据新鲜度依赖、变更影响和维护窗口规划。

- 数据质量:OpenMetadata 的数据质量能力主要围绕测试、剖析、Freshness、Volume、Null、Uniqueness、Distribution、告警、事件和问题定位展开。这类能力可以把"质量规则"从脚本、SQL 文件或调度任务注释中抽离出来,变成和表、字段、Owner、血缘直接关联的元数据。这样质量失败不再只是某个任务报警,而是可以被追溯到具体资产、上下游依赖和负责人。
- 业务术语与分类:OpenMetadata 支持 Glossary、Glossary Terms、Classifications 和 Tags,用来表达业务语义与治理标签。这类能力能缓解数据平台中常见的"同名不同义、同义不同名"问题。例如
cust_id、customer_id、buyer_id可能在不同系统中指向不同业务实体,也可能只是命名差异。通过术语、同义词、标签和资产绑定,团队可以逐步沉淀共享语义。
lua
字段名: cust_id
|
+--> 技术类型: bigint
|
+--> 业务术语: Customer Identifier
|
+--> 分类标签: PII
|
+--> 治理策略: 敏感字段访问受控
|
+--> Owner: 客户域数据团队
- 权限与治理:OpenMetadata 提供元数据层面的权限、角色、策略、分类、认证和治理上下文,可以管理谁能查看、编辑和操作元数据,也可以把数据敏感性、Owner 和策略作为治理上下文传递给用户或 AI 系统。
- AI 与 MCP:OpenMetadata MCP Server 允许 AI 助手查询元数据,例如"这个指标的定义是什么""哪些数据流入这个仪表盘""这个数据集 Owner 是谁、最后什么时候更新"等问题。
五、适用场景
OpenMetadata 并不是只有大型公司才需要,只要数据资产跨越多个系统,且团队开始频繁遇到"找不到、看不懂、不敢用、改不起"的问题,就可以考虑引入。
| 场景 | OpenMetadata 的作用 |
|---|---|
| 多数据源统一目录 | 汇总 Hive、MySQL、ClickHouse、Databricks、BigQuery、BI 等资产 |
| 数仓血缘治理 | 查看表级、字段级、管道级血缘,辅助影响分析 |
| 指标口径治理 | 用 Glossary、Metric、Owner 管理业务定义 |
| 敏感数据识别 | 通过标签、分类、策略管理 PII、敏感、合规字段 |
| 数据质量运营 | 将测试、剖析、Freshness 和异常与具体资产绑定 |
| Data Mesh | 用 Domain、Data Product 和 Owner 表达业务边界 |
| AI 数据助手 | 通过 MCP、语义搜索和 API 给 AI 提供企业数据上下文 |
更具体地说,如果你的团队正在做数据治理、数仓资产盘点、指标平台、数据质量平台、AI Copilot for Data、Data Mesh 或数据产品化,OpenMetadata 都值得纳入调研范围。
当然,OpenMetadata 不是万能药。如果只有少量数据库表、没有跨系统数据流、没有治理诉求,引入它可能会增加维护成本。它也不是实时计算引擎、数据开发平台或权限执行引擎,不应期待它替代 Flink、Airflow、dbt、DataHub、Ranger、Lake Formation 或 BI 平台的核心职责。
OpenMetadata 负责"描述和连接数据生态",而不是"处理和计算数据"。它可以告诉你某张表怎么来、被谁用、质量如何、含义是什么,但不会替你完成底层数据计算任务。
六、部署使用
OpenMetadata 支持 Docker 和 Kubernetes 部署。Docker 部署适合简化设置、扩展和本地测试,Docker 部署的大致流程如下:
yaml
1. 准备 Docker 与 Docker Compose
|
v
2. 下载 docker-compose-openmetadata.yml
|
v
3. 配置外部 MySQL / Elasticsearch 或 OpenSearch
|
v
4. 配置 Ingestion Service / Airflow 连接信息
|
v
5. docker compose --env-file ./env-mysql up --detach
|
v
6. 访问 http://localhost:8585
生产环境更推荐 Kubernetes。OpenMetadata 支持通过 Helm Charts 在 Kubernetes 上安装和运行,并在生产架构中连接外部 Database、ElasticSearch 和 Airflow 等编排工具;OpenMetadata Helm Charts 会通过 Kubernetes Service 暴露8585和8586(常用于健康检查和指标端点)端口,Network Policies 和 Ingress 默认关闭,可通过 Helm Values 启用。
lua
开发 / PoC
==========
Docker Compose
|
+-- OpenMetadata Server
+-- MySQL / PostgreSQL
+-- Elasticsearch / OpenSearch
+-- Airflow / Ingestion
生产环境
========
Kubernetes + Helm
|
+-- OpenMetadata Server Pod
+-- 外部数据库
+-- 外部 Elasticsearch / OpenSearch
+-- Airflow 或 K8s Native Orchestrator
+-- Ingress / Network Policy / Secret / Monitoring
初次试用 OpenMetadata 不建议一上来就接入所有系统,更稳妥的路径是从一条核心数据链路开始,例如"交易数仓核心表 -> 汇总表 -> BI 看板"。
yaml
第 1 步:接入一个核心数据源
|
v
第 2 步:补充表和字段描述
|
v
第 3 步:配置 Owner 和团队
|
v
第 4 步:接入 dbt / Airflow / BI 工具生成血缘
|
v
第 5 步:添加质量测试和 Freshness 检查
|
v
第 6 步:建立术语表、标签和敏感分类
|
v
第 7 步:评估 API、Webhook、MCP 与内部平台集成