前作数仓系列之元数据及其管理偏向于理论介绍,本文汇总几个元数据管理相关工具或项目。
元数据管理解决方案监控整个生命周期中的数据,包括数据分析,数据价值,数据治理以及风险和合规性。
OpenMetadata
官网,开源(GitHub,14.7K Star,2.3K Fork)元数据管理平台,集成数据治理、数据协作、数据观测、数据发现(官方宣传)功能于一体,实际上也包括数据质量、数据血缘等功能;支持84+连接器。
优点:
- 提供在线体验Demo环境,有助于推广拉新
- UI界面美观漂亮,界面操作逻辑符合国人使用习惯
- 项目年轻,能够在已有的众多数据资产项目中吸取经验
- 集成数据质量模块
- 支持开放数据标准
- 基于数据可观测的新理念设计
五层结构
从下到上包括:
- Schemas:JSON Schema定义所有元数据实体,是整个系统的词汇表。使用类型、实体和实体之间关系的模式,定义元数据的核心抽象和词汇。开放元数据标准的基础,支持具有自定义属性的实体和类型的可扩展性
- Metadata Store:MySQL/PG存储元数据,ES/OpenSearch负责搜索索引
- REST APIs:Java21+Dropwizard构建的REST API,主端口8585
- Ingestion Framework:摄取框架,Python编写的采集框架,通过Airflow调度,84+数据源连接器
- User interface:用户界面,用户发现所有数据并就所有数据进行协作的单一位置
核心功能
- 数据协作:通过活动源获取事件通知。使用webhook发送警报和通知。添加公告以通知团队即将发生的更改。添加任务以请求描述或术语表术语批准工作流程。添加用户提及并使用对话线程进行协作
- 数据质量和分析器:标准化测试和数据质量元数据。将相关测试分组为测试套件。支持自定义SQL数据质量测试。有一个交互式仪表板可以深入了解详细信息
- 数据血缘:支持丰富的列级沿袭。有效过滤查询以提取沿袭。根据需要手动编辑谱系,并使用无代码编辑器连接实体
- 全面的角色和策略:处理复杂的访问控制用例和分层团队
- 连接器:支持连接到各种数据库、仪表板、管道和消息传递服务的84个连接器
- 术语表:添加受控词汇来描述组织内的重要概念和术语。添加词汇表、术语、标签、描述和审阅者。
- 数据安全:支持Google、Okta、自定义OIDC、Auth0、Azure、Amazon Cognito和OneLogin作为SSO的身份提供商。支持AWS SSO和Google基于SAML的身份验证
Schema-First:一份定义驱动三端代码。所有实体定义只写一次JSON Schema,make generate命令,可生成Java POJO(后端)、Python Pydantic 模型(Ingestion)、TypeScript interface(前端)三端模型代码。前后端对同一个"表"的理解永远一致,后端加字段,前端必然同步知道。
核心实体定义在openmetadata-spec/src/main/resources/json/schema/:
table.json:13种表类型,28+数据类型tag.json:分类标签glossary.json:术语表testCase.json:数据质量测试用例testSuite.json:测试套件lineage.json:列级血缘关系
连接器是元数据平台的命脉:
| 类别 | 数量 | 代表 |
|---|---|---|
| 数据库 | 50+ | MySQL、PG、BigQuery、Snowflake、Redshift、ClickHouse、MongoDB、Databricks、Oracle |
| 仪表盘 | 15+ | Tableau、Looker、PowerBI、Superset、Metabase、Grafana、Redash |
| 管道 | 15+ | Airflow、Dagster、dbtCloud、Fivetran、Airbyte、NiFi、Flink |
| 消息队列 | 5 | Kafka、Kinesis、Pub/Sub、Redpanda |
| 存储 | 2 | S3、GCS |
| ML模型 | 3 | MLflow、SageMaker |
每个连接器目录结构一致:connection.py连接、metadata.py提取元数据、lineage.py解析血缘、service_spec.py定义服务规格。
列级血缘分两条路:数据库内置查询(如Snowflake的ACCESS_HISTORY)和SQL日志解析。SQL解析用自研的collate_sqllineage库,基于ANTLR做15+方言的语法分析,最终用NetworkX DiGraph构建有向血缘图。
数据质量方面,内置25种测试类型,分两大类:
- 列级测试(14种):唯一性、非空、值域范围、正则匹配、集合包含/排除、长度、统计分布(均值、中位数、标准差)
- 表级测试(11种):行数校验、列数校验、列存在性、自定义SQL、表对比(Table Diff)
测试定义在仓库里就是JSON文件,如columnValuesToBeUnique.json定义唯一性校验的模板参数,tableRowCountToBeBetween.json定义行数范围校验。通过UI无代码创建测试用例,按Test Suite组织,执行结果直接展示在仪表盘上。
Profiler模块(ingestion/src/metadata/profiler/)负责自动采样统计,支持不同数据库的专用采样策略。实际效果:给BigQuery里的订单表加"金额不为空""状态在枚举范围内"的约束,每天自动跑,结果自动推——不用写一行代码。
治理分四层:
- 标签(Tags):层级分类标签,UI手动打标或Auto Classification自动分类
- 术语表(Glossary):统一定义"收入""活跃用户"这类业务术语,关联到具体数据资产
- 所有权(Ownership):给表、仪表盘、管道指定Owner和Steward
- 数据域(Domains)与数据产品(Data Products):按业务域组织资产,形成可发现、可复用的数据目录
权限基于RBAC,SSO支持Google、Okta、Azure AD、Auth0、AWS Cognito、SAML、LDAP,JWT认证。基本覆盖企业常见身份体系。实现完整OAuth 2.0授权服务器:
- RFC 7636 PKCE授权码流程,复用OpenMetadata已有的SSO认证
- Token加密存储(Fernet),Access Token 1小时、Refresh Token 7天自动轮转
- MCP工具执行时使用用户身份,遵守RBAC策略,权限边界和UI一致
MCP集成,支持三个工具:GetLineageTool、SearchTool、DiscoveryTool。
Python采集(Ingestion)框架的调度依赖Apache Airflow,如果团队目前没用Airflow,就得多引入一个组件。
实战
如果想快速体验功能,建议使用官方在线sandbox,使用Google单点登录,左侧边栏如下:
以及
探索
数据集市(Data Marketplace)
治理-术语库
解读:
- 术语库下有若干个术语
- 术语有从属关系、描述、状态、所有者,可添加标签
- 可对术语点赞、点踩
- 术语有版本历史
治理-本体浏览器
信息量有点大
治理-列批量操作
解读:
- 列名可能重复,出现在不同资产(表)里
- 列名唯一出现在某资产里时,资产列可跳转
- 描述,其实就是状态,有4种:完成、不完整、不一致、丢失的
- 搜索条件默认有列名、服务、资产类型、状态,支持添加自定义过滤条件
添加过滤
基于源码和Docker Compose部署:
gitclone https://github.com/open-metadata/OpenMetadata.gitcdOpenMetadatadockercompose-fdocker/docker-compose-quickstart/docker-compose.yml up-d莫名其妙,这是在下载电影吗???
其中.git隐藏文件夹有2.83G
早知道可使用浅克隆,参考Git拓展。
浏览器打开管理界面http://localhost:8586,默认账号:admin/admin,API文档打开http://localhost:8585。
DataHub
官网,Linkedin开源(GitHub,12.5K Star,3.6K Fork)、为现代数据栈而生的元数据平台,目的就是为了解决多种多样数据生态系统的元数据管理问题,提供元数据检索、数据发现、数据监测和数据监管能力,解决数据管理的复杂性。官方文档。
采用基于推送的数据收集架构(当然也支持pull拉取的方式),能够持续收集变化的元数据。当前版本已集成大部分流行数据生态系统接入能力,包括但不限于:Kafka、Airflow、MySQL、SQL Server、Postgres、LDAP、Snowflake、Hive、BigQuery。
优点:
- 底层架构灵活先进,未扩展集成而生,支持推送和拉去模式
- UI界面简单易用,技术人员及业务人员友好
- 接口丰富,功能全面
不足:
- 前端界面不支持国际化,界面的构建和使用逻辑不够中国化
- 版更更新迭代快,使用后升级是个难题
- 较多功能在建设中,如Hive列级血缘
- 部分功能性能还需要优化,如SQL Profile
架构图
CKAN
官网,世界领先的开源(GitHub,5.1K Star,2.1K Fork)数据门户平台,用于制作开放数据网站的工具,使发布、共享和处理数据变得容易。数据管理系统,为编目、存储和访问数据集提供强大平台,具有丰富前端、完整API(用于数据和目录)、可视化工具等。
优点:
- Python主要开发语言,上手入门不难
- 历史悠久,有大量的政府、研究组织用来开放公开数据
- 使用简单、独立部署
- 功能聚焦,中小规模数据编目、开发、预览及下载
不足:
- 聚焦于数据门户,即编目组织数据、提供数据预览及下载
- 海量数据传输,性能有问题
- 不支持现代大数据同步、集成
- 功能相对单一
Amundsen
官网,Lyft开源(GitHub,4.8K Star,964 Fork)数据发现和元数据管理平台,旨在提高数据分析师、数据科学家和工程师与数据交互时的生产力。
提供用户友好的界面,使用户可搜索、浏览和贡献数据集的元数据信息,支持与其他数据工具和平台的集成。通过索引数据资源(表格、仪表板、数据流等)并基于使用模式(如查询频率高的表格会优先于查询频率低的表格)提供页面排名式的搜索功能来实现这一目标。
优点:
- Lyft大厂开源,社区活跃,版本更新较多
- 定位清晰明确,与Datahub类似,致力于成为现代数据栈中的数据目录产品
- 支持对接较多的数据平台与工具
- 微服务架构:支持通过Databuilder框架自定义元数据采集任务,支持ES/OpenSearch、PostgreSQL/MySQL、AWS Neptune、Neo4j作为后端存储
不足:
- 中规中矩的UI界面,操作便捷性不足
- 血缘、标签、术语等功能方面不如Datahub使用便捷
对比其他项目
| 工具 | 核心差异点 |
|---|---|
| Atlas | 与Hadoop生态深度耦合,偏重安全与治理;Amundsen轻量且UI友好 |
| DataHub | 原生支持流式元数据(Kafka)、GraphQL API;更早专注"搜索体验优化" |
| OpenMetadata | Apache开源目录,侧重元数据事件流与治理工作流;专注于搜索与协作体验 |
Marquez
官网,主要使用Java开发、开源(GitHub,2.3K Star,407 Fork)数据资产的可视化及血缘展示。
优点:
- 界面美观,操作细节设计比较棒
- 部署简单,代码简洁
- 依靠底层OpenLineage协议,结构较好
不足:聚焦数据资产/血缘的可视化,数据资产管理的一些功能,需要较多开发工作。
Metacat
Netflix开源(GitHub,1.7K Star,286 Fork)的数据发现和元数据管理平台,提供统一的接口来查找和浏览各种数据集的元数据信息,并支持与其他数据工具和服务的集成。
核心架构涉及三项关键服务:执行服务(Genie)、元数据服务(Metacat)和事件服务(Microbots)。
充当所有数据存储的元数据访问层,也是各种计算引擎可用来访问不同数据集的集中式服务。
三个主要目标:
- 元数据系统的联合视图
- 用于数据集元数据的统一 API
- 数据集的任意业务和用户元数据存储
功能
- 数据抽象和互操作性
- 业务和用户定义的元数据存储
- 数据发现
- 数据变更审计和通知
- Hive Metastore优化
Open Data Discovery
简称ODD,官网,开源(GitHub,1.4K Star,143 Fork)的数据发现和可观测性平台。旨在通过使数据更易于发现、管理、可观察、可靠和安全,帮助数据驱动企业实现数据民主化。ODD支持开放数据标准,数据团队能够在各种数据工具之间进行更高效的数据交换。
优点:
- 提供在线体验Demo环境,有助于推广拉新
- UI界面美观漂亮,界面操作逻辑符合国人使用习惯
- 项目年轻,能够在已有的众多数据资产项目中吸取经验
- 集成了数据质量模块
- Datahub有的一些优秀功能都做了规划
- 支持开放数据标准,感觉也没啥用,国内玩不转
- 提供了调度工作流告警接口
- 基于数据可观测的新理念设计
- ML是第一等公民,这个是对赌未来的AI发展预期
实战
官方提供在线demo,支持Google和GitHub两种授权登录方式。
先看看管理,当前支持:命名空间、数据源、集成、收集者、拥有者、标签、角色、政策
管理-集成
目前支持31种外部集成:Airbyte、Cassandra、CKAN、ClickHouse、CockroachDB、Couchbase、Databricks、Apache Druid、DuckDB、Elasticsearch、Hive、MariaDB、Metabase、MongoDB、SQL Server、MySQL、Neo4j、Oracle、PG、Presto、Redash、Redshift、scylladb、SingleStore、Snowflake、Spark、SQLite、Superset、Tableau、Tarantool、Trino。
管理-数据源
Magda
官网,开源(GitHub,604 Star,105 Fork)数据目录系统,提供数据编目、增强、搜索、跟踪和排序等功能。支持内部、外部数据源,支持大数据及小数据处理,支持通过文件、数据库或API的方式对外提供数据资产服务。
目标用户:数据技术人员,例如数据分析师、数据科学家和数据工程师。
价值目标:为数据技术人员,提供历史数据版本管理、重复数据检测等辅助功能,提高数据查询、管理的效率及质量。
优点:
- 轻量简单的数据目录管理平台,界面朴素简洁
- 支持数据预览、地图数据
- 功能聚焦,独立部署
不足:
- 功能相对单一,与下面的CKAN一样,定位于数据编目,数据展示及共享
- 海量数据传输,性能有问题
- 不支持现代大数据同步、集成
实战
官方提供在线体验demo,不过打不开no healthy upstream。
商业平台
Collate
官网,Open Metadata的SaaS版本。
Alation
官网,商业数据目录,UI简单、一致且直观。
Atlan
官网,元数据管理、数据治理统一协同工作台,功能丰富,如数据目录和发现、数据血缘和治理以及数据探索和集成。内置支持多种数据质量工具。
优点:
- 功能丰富、支持协同工具,Slack等集成
- UI界面美观、操作指引友好
- 内置支持多种数据集成工具及数据探索工具
不足:其实是商用产品,仅部分开源(GitHub)。
Monte Carlo
官网,数据平台,可帮助数据团队解决数据停机问题,使他们能够更有效地处理仪表盘,更快地训练更准确的ML模型,并推动分析操作。广泛关注机器学习驱动的数据可观测性,为数据团队提供深入研究数据和大规模识别潜在问题的高级能力。与许多其他专有数据目录解决方案一样,将用户锁定到自己的数据接收协议中。缺少某些ML实体,可能会破坏当今许多组织的交易。
Datakin
官网,Marquez的商用SaaS版本, 支持Apache Hive、Amazon RDS、Teradata、Amazon Redshift、Amazon S3、Cassandra。
Metaphor
官网,DataHub的商业SaaS版本。
Stemma
官网,Amundsen的商业SaaS版本。
Ataccama
官网,AI驱动的数据和元数据企业平台,具有数据质量、主数据管理和数据集成组件。UI,使快速分析团队、高度监管的治理团队和技术数据团队能够轻松处理其数据资产。优点是非常注重数据质量,对敏捷、数据驱动的组织至关重要。