ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

DataHub元数据平台从零到生产:部署、数据摄入与运维全记录

DataHub元数据平台从零到生产:部署、数据摄入与运维全记录 DataHub元数据平台从零到生产部署、数据摄入与运维全记录【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub团队里的表涨到几百张之后问题基本都会出现没人说得清哪张表还在用、哪些字段装着敏感数据、出问题该找谁。新人想做一次用户分析只能挨个问同事。DataHub解决的就是这类元数据混乱——它是一个开源的元数据管理平台把数据库、数据仓库、BI 工具和任务编排系统里的元数据拉进统一目录提供搜索、数据血缘和治理能力任何一张表变了你能顺藤摸瓜看到上下游影响。跑起来的路径不长装一个 Python CLI一条命令拉起整套容器再写几行 YAML 就开始摄入自己的数据。下面是从零开始的完整过程从确认依赖到摄入第一张 MySQL 表。跑之前先确认这 3 样东西和一条启动命令DataHub 的 quickstart 模式用 Docker Compose 一次性拉起完整服务栈GMS元数据服务、React 前端、Kafka、OpenSearch 搜索引擎和 MySQL 元数据库。跑之前确认下表里的依赖即可依赖最低版本验证命令Docker Compose v2Docker 20.10Compose 2.20docker compose versionPython3.10python3 --version内存分配 8GB 给 Dockerdocker system info官方验证过的配置是 2 CPU / 8GB 内存 / 13GB 磁盘。内存给不够的典型症状是 GMS 一直起不来、容器反复重启先查 Docker 引擎的内存上限而不是怀疑 DataHub 本身。安装 CLI 并启动整套服务# 安装 DataHub CLI需要 Python 3.10 python3 -m pip install --upgrade acryl-datahub datahub version # 验证安装输出版本号即成功 # 一条命令启动完整服务栈 datahub docker quickstart一切顺利的话最后一行是 ✔ DataHub is now running。用到的 compose 文件会自动落到~/.datahub/quickstart/后面想改配置直接编辑它。想锁定某个版本就加--version参数默认前端端口 9002 被占用的话用DATAHUB_MAPPED_FRONTEND_PORT环境变量覆盖。浏览器打开 http://localhost:9002用默认账号datahub / datahub登录能看到一个空的前端。跑通之后第一件事是改掉默认口令官方有专门章节docs/authentication/changing-default-credentials.md。上图是 DataHub 在数据栈中的位置左边是各种数据源元数据通过 push / pull 进入平台右边是 GraphQL、REST、Kafka 三类接口供下游应用消费。CLI 的所有命令本质上也是走这些接口。第一次用 DataHub载入样例数据并试一遍完整搜索空目录没有价值先载入官方样例数据# 让 CLI 指向本地 DataHub 实例生产环境换成实际凭据 datahub init --username datahub --password datahub # 载入样例数据约 1050 个实体覆盖 Snowflake/Looker/PowerBI/Tableau datahub datapack load showcase-ecommerce跑完刷新前端你会看到一个内容完整的目录带负责人、术语标签、域、数据产品还有连好的血缘关系。这份样例数据适合把前端功能挨个摸一遍。然后是搜索。前端搜索框支持自然关键词也支持精确语法platform:snowflake按数据平台过滤fieldPaths: customer_id按字段名找字段-test排除还能用 AND/OR/NOT 组合。结果页左侧有平台、标签、负责人等过滤维度点选即可继续收窄。命令行里是同一套能力# 关键词搜索 datahub search customer # 按平台与实体类型过滤 datahub search * --filter platformsnowflake --filter entity_typedataset预期你会看到返回一张符合条件的数据集列表。点开其中一张表的详情页schema、负责人、标签、血缘图、变更历史都会出现这个实体档案页是日常用得最多的地方。点血缘图上的节点可以跳到上游或下游的表从源头表一路点到 BI 报表把整条链路走一遍。不同实体类型Dataset、Dashboard、User 等之所以能用同一套页面统一管理靠的是前端的实体注册表层相关代码在datahub-web-react/。接入你自己的数据源3 个最常用摄入场景的完整配置摸熟之后就该摄入自己的数据了。配置套路是统一的写一个 YAML 配方文件source声明数据从哪来sink声明往哪送中间用datahub ingest执行。核心 CLI 只内置了少量连接器先装对应插件比如pip install acryl-datahub[mysql,snowflake]。同步 MySQL 元数据的完整配置大多数团队可以先从几张小表开始见效最快source: type: mysql config: host_port: localhost:3306 # 改MySQL 地址和端口 database: datahub # 改要同步的库名 username: datahub # 改建议用只读账号 password: datahub # 改密码 sink: type: datahub-rest config: server: http://localhost:8080 # quickstart 默认地址可保持同步 Snowflake 数仓的完整配置数仓用户的主力一般是 Snowflake 或 BigQuery配置长得一样换连接信息即可source: type: snowflake config: account_id: your_account # 改Snowflake 账号 username: your_user # 改登录用户 password: your_password # 改密码 role: SYSADMIN # 没有专用角色可保持默认 warehouse: COMPUTE_WH # 改使用的仓库 email_domain: mycompany.com # 可选按邮箱域自动关联负责人 sink: type: datahub-rest config: server: http://localhost:8080只想要一部分表的话在 source 配置里加include_tables过滤即可。dbt 血缘只需要指两个文件团队如果已经在用 dbt最有价值的元数据是它算好的模型血缘不用重新解析 SQL指向 target 目录下的两个文件就行source: type: dbt config: manifest_path: ./target/manifest.json # 改dbt manifest 文件路径 catalog_path: ./target/catalog.json # 改dbt catalog 文件路径 target_platform: bigquery # 改底层仓库平台 sink: type: datahub-rest config: server: http://localhost:8080三个配方跑法都一样# 先 --dry-run 校验配置不会写入数据 datahub ingest -c mysql_recipe.yaml --dry-run # 正式运行成功后输出报告实体数、耗时、错误列表 datahub ingest -c mysql_recipe.yaml跑成功后前端就能看到新表报告里的错误列表会精确到是哪张表失败、为什么失败。摄入管道可以做成定时任务仓库里metadata-ingestion-modules/airflow-plugin/有现成的 Airflow 插件不想写代码的话前端 Ingestion 页面里配数据源、直接跑也行。从能跑到跑得稳你大概率会遇到的三个问题搜索出不来结果或者明显变慢。先验证搜索引擎的健康状态一条命令curl -s http://localhost:9200/_cluster/health # status 为 green 即正常如果不是 green或查询普遍慢九成是内存问题。把分给 OpenSearch 的内存提到 4G 以上或者先调大 Docker 引擎的整体内存上限然后停掉实例再重启datahub docker quickstart --stop再执行一次 quickstart。摄入任务失败或报告里带错误。别猜先用--dry-run确认配置本身没问题再看报告里的错误列表。高频原因就两类数据源账号权限不够给只读 SELECT 即可或者跑摄入的机器连不上数据源查网络和安全组。需要更细的日志就加--debug参数重跑。要升级或动大配置之前先备份。quickstart 自带备份命令# 升级前先做全量备份 datahub docker quickstart --backup从很老的 CLI 版本升级时流程是先备份再datahub docker nuke清掉旧环境然后重新 quickstart。跳过备份的话已有数据全部丢失。生产环境用 Kubernetes 部署的看docs/deploy/kubernetes.md。踩坑速查3 个高频问题一张表看完问题现象大概率原因处理动作quickstart 后容器反复重启GMS 迟迟不健康Docker 分配内存不足内存提到 8G 以上重新 quickstartdatahub: command not foundCLI 没进 PATH或装在 Python 2 上改用python3 -m datahub version仍报错就在 Python 3.10 重装摄入报告显示 0 新增 / 连接超时数据源权限不足或网络不通确认账号有只读权限从摄入机器测数据源连通性长尾问题不在这篇里展开官方排障章节更系统docs/troubleshooting/quickstart.md和docs/troubleshooting/general.md。还想往深了玩插件、元数据模型与 AI 的入口默认实体和功能覆盖不了需求时常见的扩展方向有三个。一是自定义元数据模型数据模型用 PDL 定义源码在metadata-models/src/入门指南看docs/modeling/extending-the-metadata-model.md。二是写自己的数据源插件Python 连接器都在metadata-ingestion/src/datahub/ingestion/下照着metadata-ingestion/adding-source.md抄一个就能跑。三是接 AIDataHub 提供 MCP 集成层datahub-agent-context/可以把 Cursor、Claude Desktop 这类工具挂到目录上还有开源的分析 agent用自然语言问数、直接返回 SQL 和图表。从一个能跑的实例到全队在用的数据资产平台关键是把第一条摄入管道跑通之后每加一个数据源、每补一批标签和负责人目录就会更完整一分。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表