OpenMetadata

概念

源码地址:https://github.com/open-metadata/OpenMetadata

官方文档:https://docs.open-metadata.org/latest

OpenMetadata是一个开源的企业级元数据管理平台,它的核心目标是为你的数据资产建立一个统一的、可供搜索和协作的"数据目录"。

可以理解为用于管理"关于数据的数据"(即元数据)的中台系统。

因为 OpenMetadata 的核心后端服务是用 Java 构建的,并且它的用户界面(UI)主要使用 React 开发。

所以正是因为团队主要是以Java作为开发语言,以及整体运维体系来说,还是Openmetadata更加适合我们,并进行二次开发。

|------|-------------------------------------------------------------|
| 维度 | 说明 |
| 核心定位 | 统一元数据管理平台,用于数据发现、治理和协作。 |
| 主要功能 | 数据发现与搜索、列级数据血缘追踪、数据质量管理、数据资产目录、团队协作(分配所有者、打标签)等。 |
| 技术架构 | 后端基于 Java (Spring Boot),前端使用React,依赖MySQL、Elasticsearch等服务。 |
| 应用场景 | 企业内部数据资产盘点、追溯数据问题根源(影响分析)、保障数据质量、为数据湖/数据仓库提供上层治理。 |

本地部署(使用 Docker Compose)

操作系统:macOS

安装Docker(如已安装请跳过)

  1. 从官网 下载 macOS 版安装包。
  1. 拖动应用图标到"应用程序"文件夹完成安装
  1. 启动应用,等待菜单栏出现 Docker 图标并显示运行状态。

直接下载:

暂时无法在Lark文档外展示此内容

  1. 安装后验证
复制代码

docker --version docker-compose --version

部署 OpenMetadata

直接安装

复制代码

# 1. 下载官方编排文件 curl -o docker-compose.yml https://raw.githubusercontent.com/open-metadata/OpenMetadata/main/docker-compose.yml # 2. 启动所有服务(在后台运行) docker compose up -d

使用国内镜像

复制代码

# 使用 FastGit 的镜像(推荐) curl -o docker-compose.yml https://raw.fastgit.org/open-metadata/OpenMetadata/main/docker-compose.yml # 或使用 GitHub 的镜像站 curl -o docker-compose.yml https://ghproxy.com/https://raw.githubusercontent.com/open-metadata/OpenMetadata/main/docker-compose.yml

手动创建文件

在执行命令的目录中手动创建一个名为 docker-compose.yml 的文件,然后粘贴保存。

复制代码

version: "3.9" services: mysql: image: openmetadata/db:1.3.2 restart: always environment: MYSQL_ROOT_PASSWORD: password ports: - 3306:3306 elasticsearch: image: openmetadata/elasticsearch:1.3.2 restart: always environment: ES_JAVA_OPTS: "-Xms512m -Xmx512m" discovery.type: single-node ports: - 9200:9200 openmetadata-server: image: openmetadata/server:1.3.2 restart: always ports: - 8585:8585 environment: DB_HOST: mysql DB_PORT: 3306 DB_USER: root DB_PASSWORD: password ELASTICSEARCH_HOST: elasticsearch ELASTICSEARCH_PORT: 9200 depends_on: - mysql - elasticsearch openmetadata-ingestion: image: openmetadata/ingestion:1.3.2 restart: always environment: DB_HOST: mysql DB_PORT: 3306 DB_USER: root DB_PASSWORD: password ELASTICSEARCH_HOST: elasticsearch ELASTICSEARCH_PORT: 9200 depends_on: - mysql - elasticsearch

启动服务

必须在openmetadata的目录下

复制代码

docker compose up -d

注意

跳转链接的时候可能会报错

打开docker

替换成:

复制代码

{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "registry-mirrors": [ "https://mirror.ccs.tencentyun.com", "http://hub-mirror.c.163.com", "https://reg-mirror.qiniu.com" ] }

验证配置是否生效

Docker Desktop 重启成功后,打开终端,输入以下命令并回车:

复制代码

docker info

在输出的信息中查找 Registry Mirrors。如果能看到类似下面的内容,并且包含了刚才添加的地址(如 mirror.ccs.tencentyun.com),就说明配置成功了

配置生效后,回到 OpenMetadata 项目目录,再次执行启动命令:

复制代码

cd ~/Downloads/OpenMetadata docker compose up -d

最后 本地部署以失败告终,主要原因还在于网络问题,切换不同的网络docker pull都会失败,最后只能单个下载,load到docker里,mqsql数据库又报错迁移问题,官网拿到的yml配置也不对,所以我觉得主要还是网络问题,网络可以的话,就不会出现后面的那些配置问题

离线包:

测试

访问官方Demo环境:https://sandbox.open-metadata.org/

  • 用户名:admin

  • 密码:admin

AskCollate - AI智能助手 🤖

复制代码

功能:自然语言查询数据资产 用法: • "显示所有客户表" • "哪些表包含个人身份信息?" • "找到上个月最活跃的数据资产" • "帮我查看订单表的数据血缘"

探索 - 数据发现与搜索 🔍

复制代码

主要功能: • 全局搜索:按表名、列名、描述搜索 • 筛选器:按数据库、标签、所有者、领域筛选 • 排序:按流行度、最近更新、名称排序 • 收藏:标记常用资产

血缘关系 - 数据溯源追踪 🕸️

查看数据如何流动:

源表 → 转换/ETL → 目标表

使用场景:

  1. 影响分析:某表结构变更,会影响哪些下游报表?

  2. 根因分析:报表数据异常,是哪个上游表的问题?

  3. 合规追踪:敏感数据从哪里来,流向哪里?

观察 - 监控与告警 📊

复制代码

功能:实时监控数据健康状况 包含: • 数据质量测试结果 • 元数据变更历史 • 数据新鲜度检查 • SLA监控

可以配置的监控项:

复制代码

数据质量测试: - 行数监控:表行数不应为0 - 空值检查:关键列不能为空 - 唯一性检查:ID列必须唯一 - 值域检查:年龄在0-120之间 告警通知: - 邮件通知 - Slack/Teams消息 - Webhook到其他系统

洞察 - 分析与报告 📈

复制代码

功能:提供数据资产的统计分析 • 数据资产分布(按类型、领域) • 元数据覆盖率统计 • 数据质量评分 • 团队活跃度分析

域 - 数据域管理 🏢

复制代码

功能:按业务领域组织数据 类似于"文件夹"结构,用于数据分类

示例领域结构:

复制代码

公司数据 ├── 客户领域 │ ├── 客户基本信息 │ ├── 客户交易记录 │ └── 客户服务记录 ├── 产品领域 │ ├── 产品目录 │ ├── 库存管理 │ └── 定价信息 └── 财务领域 ├── 收入数据 ├── 成本数据 └── 财务报表

操作:

  1. 创建领域(如"营销领域")

  2. 将相关表分配到该领域

  3. 设置领域所有者

  4. 配置领域特定策略

治理 - 数据治理框架 ⚖️

复制代码

功能:确保数据质量、安全和合规 包含: • 策略管理 • 访问控制 • 数据分类 • 合规性检查

具体功能:

复制代码

标签管理: - 业务标签:customer_data, financial_data - 敏感度标签:PII, confidential, public - 技术标签:raw, curated, aggregate 策略配置: - 谁可以查看敏感数据 - 哪些表需要定期质量检查 - 数据保留策略

Knowledge Center - 知识库 📚

复制代码

功能:文档和最佳实践 • 数据字典 • 业务术语表 • 使用指南 • 最佳实践文档

内容示例:

复制代码

术语定义: - "活跃用户":过去30天内有登录行为的用户 - "GMV":Gross Merchandise Volume,商品交易总额 使用指南: - 如何添加表描述 - 数据质量测试配置 - API调用示例

SQL Studio Beta - SQL查询工具 💻

复制代码

功能:直接在平台内运行SQL查询 特点: • 语法高亮和自动补全 • 查询历史记录 • 结果可视化 • 查询性能分析

使用示例:

复制代码

-- 查找所有包含邮箱的表 SELECT table_schema, table_name, column_name FROM openmetadata.catalog WHERE column_name LIKE '%email%' AND data_type LIKE '%varchar%';

部署OpenMetadata的常见模式

模式1:直接使用官方镜像(最常见)

也就是本文部署的

复制代码

# 这就是之前尝试的方式 - 使用Docker Compose services: openmetadata-server: image: openmetadata/server:latest # 直接拉官方镜像 # 不需要修改源码

优点:

  • 快速部署

  • 官方维护升级

  • 稳定可靠

缺点:

  • 定制化有限

  • 二次开发需要额外配置

模式2:源代码定制化部署

复制代码

# 有自己的代码仓库 git clone https://github.com/open-metadata/OpenMetadata.git # ↓ # 修改源码(UI/后端逻辑) # ↓ # 自己构建镜像 mvn clean install -DskipTests docker build -t mycompany/openmetadata:custom . # ↓ # 部署自己的镜像

模式3:混合模式

复制代码

前端:使用官方镜像 后端:自定义连接器 + 插件 ↓ 通过配置文件扩展功能 ↓ 无需修改核心代码

相关推荐
列逍9 天前
Linux文件(一)
linux·文件操作·write·read·重定向·open·文件描述符
wsdhla8 个月前
如何在Windows上实现MacOS中的open命令
mac·cmd·open
SuperHeroWu78 个月前
【HarmonyOS 5】使用openCustomDialog如何禁止手势关闭的方案
华为·harmonyos·open·customdialog·手势关闭
SuperHeroWu79 个月前
【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解
华为·harmonyos·open·自定义view·customdialog·自定义弹框·dialoghub
伊织code1 年前
Machine Learning Engineering Open Book 机器学习工程开放书
人工智能·机器学习·open·learning·machine·engineering
伊织code1 年前
Open Interpreter - 开放解释器
交互·命令行·open·解释器·interpreter
OceanSky61 年前
Java module-info模块系统
java·模块化·封装·open·module-info·opens·provides
丁总学Java2 年前
mybatis动态SQL-sql片段
foreach·collection·open·close·include refid·item·separator
卢延吉2 年前
The Challenge of Understanding When Salaries Depend on Not Understanding
open