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-datahubCLI 装好后,用一条命令启动整套服务:
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_PORT | 9002 | 前端端口冲突 |
| DATAHUB_MAPPED_GMS_PORT | 8080 | GMS 端口冲突 |
| DATAHUB_MAPPED_MYSQL_PORT | 3306 | 本机已跑 MySQL |
| DATAHUB_MAPPED_ELASTIC_PORT | 9200 | 搜索服务端口冲突 |
| METADATA_SERVICE_AUTH_ENABLED | false | 开启服务认证 |
比如 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 --backup、datahub 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),仅供参考