DataHub 快速上手指南:元数据管理平台本地跑通与首次同步实战
2026/9/13 4:07:15 网站建设 项目流程

DataHub 快速上手指南:元数据管理平台本地跑通与首次同步实战

【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub

DataHub 是一个开源的元数据管理平台,负责把散落在各数据源里的表结构、所有权和血缘收进统一目录,让你搜得到、看得懂、管得住。这篇指南适合有基本命令行经验、第一次接触 DataHub 的开发者。跟着做完,你会拥有一个本地运行的 DataHub,并亲手完成一次元数据同步。

跑起来:Docker 一键拉起 DataHub 🚀

先看一下整体数据流:左侧的数据源通过 Push/Pull 方式把元数据送进中间的 DataHub 平台,右侧再通过 GraphQL、REST、Kafka 输出给各类消费方。

开始之前只检查一件事:Docker 是否已启动。

docker ps

这条命令用来确认 Docker 守护进程在工作。如果报错或卡住,先把 Docker 服务启动起来。

然后安装 DataHub CLI,它是个 Python 包,建议装在虚拟环境里:

python3 -m pip install --upgrade acryl-datahub

CLI 装好后,用一条命令启动整套服务:

datahub docker quickstart

它会自动拉取镜像,依次启动 MySQL、Kafka、Elasticsearch、GMS 和前端。首次运行要拉取一批镜像,耗时几分钟,终端会显示进度,别中断它。成功后你会看到:

✔ DataHub is now running

接着验证各容器是否健康:

datahub docker check

预期输出✔ No issues detected。再用浏览器打开 http://localhost:9002,用默认账号 datahub / datahub 登录,能进入界面就说明 Web 端也通了。到这里,前端在 9002 端口,API 服务(GMS)在 8080 端口,DataHub 已经跑起来。

完成第一个真实任务

任务一:导入演示数据

目标:让 DataHub 里有可以搜索的数据。CLI 内置了一键导入命令:

datahub docker ingest-sample-data

默认加载 bootstrap 演示包,包含若干用户、数据集和它们的血缘;也可以指定--pack参数换数据源,比如datahub docker ingest-sample-data --pack showcase-ecommerce加载电商示例。执行完成后,终端会打印摄取统计。

任务二:搜索与浏览

目标:熟悉查询界面和检索能力。在 UI 顶部搜索框输入关键字,或用左侧 Browse 面板按"平台 → 库 → 表"逐级下钻;打开数据集详情页能看到 Schema、负责人和标签。CLI 也能直接检索:

datahub search "checkout"

终端会列出匹配的数据集,不用离开命令行即可确认数据已入库。

任务三:手写一个摄取 recipe 并执行

目标:理解 DataHub 的核心概念——摄取配方(recipe)。所有元数据进 DataHub 都靠 recipe,上面的导入命令本质就是执行一个 demo-data 到 datahub-rest 的 recipe。我们把同样的内容手写出来:

source: type: demo-data config: pack_name: showcase-ecommerce no_time_shift: false sink: type: datahub-rest config: server: http://localhost:8080

保存为recipe.yaml,然后执行:

datahub ingest -c recipe.yaml

终端按行打印摄取摘要,能看到写入的数据集数量。之后你接真实数据源(MySQL、BigQuery 等)时结构不变,只是把 source 换成对应类型并补上连接配置。顺手点开数据集详情页的 Lineage 页签,能看到数据的上下游流转;界面里的 Ask DataHub 入口还支持用自然语言提问:

按需定制

默认配置不用动,只在三种场景下改:端口冲突、固定版本、开启认证。改法都是启动前设置环境变量。最常用的几项:

变量名默认值改它的典型场景
DATAHUB_MAPPED_FRONTEND_PORT9002前端端口冲突
DATAHUB_MAPPED_GMS_PORT8080GMS 端口冲突
DATAHUB_MAPPED_MYSQL_PORT3306本机已跑 MySQL
DATAHUB_MAPPED_ELASTIC_PORT9200搜索服务端口冲突
METADATA_SERVICE_AUTH_ENABLEDfalse开启服务认证

比如 MySQL 占着 3306,在 shell 里加:

export DATAHUB_MAPPED_MYSQL_PORT=13306 # ← 这里:让 MySQL 换到 13306 export DATAHUB_MAPPED_ELASTIC_PORT=19200 # ← 这里:搜索服务端口也被占 datahub docker quickstart

端口类变量也可以用 quickstart 的快捷参数代替,例如--mysql-port 13306--elastic-port 19200。生产环境与本地 quickstart 的差异记住三点:一是 quickstart 的 MySQL、Kafka、Elasticsearch 都跑在容器里,生产要换外部组件并用 Kubernetes 部署;二是生产必须开启 METADATA_SERVICE_AUTH_ENABLED 并改掉默认账号;三是升级前先用datahub docker quickstart --backup备份,升级后用--restore恢复。

卡住了怎么办

容器逐个退出,quickstart 超时现象:docker ps里有容器反复重启。原因:Docker 分配内存不足。解法:docker system info查看内存,扩到 8GB 以上,再datahub docker nuke && datahub docker quickstart重来。

端口已被占用,提示 address already in use现象:启动报端口冲突。原因:9002/8080 被其他服务占着。解法:export DATAHUB_MAPPED_FRONTEND_PORT=9003后重新执行 quickstart。

数据已摄取,但搜索不到现象:摄取统计成功,UI 里查不到。原因:消费容器不健康或索引还没建完。解法:先datahub docker check确认状态,等一两分钟再查;仍不行就看日志docker logs对应容器。

旧实例拉不起来,提示需要迁移现象:quickstart 打印迁移指引。原因:实例由旧版 CLI 创建。解法:依次执行datahub docker quickstart --backupdatahub docker nuke、重新 quickstart,最后datahub docker quickstart --restore恢复数据。

还卡住?仓库内的 docs/troubleshooting/quickstart.md 专门讲快速启动类问题;也可以到项目 GitHub 的 Issues 区搜关键词,或在官方社区直接提问。

想继续深入,可以从仓库的 docs/quickstart.md 和 docs/ 目录入手,它们覆盖了摄取、认证、部署的所有细节;下一步建议尝试接入一张真实的 MySQL 表,或用 Helm 把 DataHub 部署到 Kubernetes 上体验生产形态。

【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询