ARTICLE DETAIL

资讯详情

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

DataHub 元数据管理平台实战:从 10 分钟部署到生产可用的完整路径

DataHub 元数据管理平台实战:从 10 分钟部署到生产可用的完整路径 DataHub 元数据管理平台实战从 10 分钟部署到生产可用的完整路径【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahubDataHub 是一个开源的元数据管理平台常被称为数据栈的上下文平台它把散落在 Snowflake、BigQuery、Airflow、dbt 等几十种系统里的元数据采集到一处让你能搜索、查看血缘、挂上负责人和质量规则。它解决的痛点是表多了以后没人知道哪张表能信、谁在维护、坏了影响谁。和 Atlan、Collibra 这类产品相比它的差异在于完全开源、可自托管且元数据摄入引擎本身就是一个 Python 包能嵌进你已有的脚本和 CI 里。10 分钟跑通完整服务栈 这一节帮你把 DataHub 从空环境跑起来最终在浏览器里看到可用的数据目录界面。先确认环境要求不复杂组件最低版本验证命令Docker20.10docker --versionDocker Composev2docker compose versionPython3.10python3 --version硬件资源2 核 / 8GB RAM / 13GB 磁盘docker system info如果资源不够先执行docker system prune -a清理无用镜像。然后装 CLI 并启动服务栈# 安装 DataHub CLI建议放在虚拟环境里 python3 -m pip install --upgrade acryl-datahub datahub version # 你会看到版本号说明 CLI 就绪 # 一键启动 MySQL、Kafka、OpenSearch、GMS、前端等全套容器 datahub docker quickstart # 你会看到各容器依次变 Healthy最后输出 DataHub is now running启动脚本会自动把 compose 文件下载到~/.datahub/quickstart/。接下来配置 CLI 指向本地实例并加载一套带血缘和治理信息的示例数据# 用默认账号登录并保存配置 datahub init --username datahub --password datahub # 加载 showcase 数据包约 1050 个实体含 Snowflake、Looker、Tableau 等 datahub datapack load showcase-ecommerce # 你会看到实体批量写入成功的输出打开浏览器访问http://localhost:9002用datahub/datahub登录。此时搜索框里输入任意表名都能出结果说明元数据管理服务的核心链路已经通了。不想用示例数据的话可以用datahub docker nuke清掉全部状态再来。能力地图发现、摄入、追踪、治理四块拼图这一节把 DataHub 的能力按数据团队一天的工作流拆开每块给你最小可用的命令和一张速查表。整体架构可以看这张数据流图各种数据源经摄入层进入搜索与血缘由服务端索引支撑最终暴露成目录界面用命令行做全局搜索不想开浏览器时datahub search就是你在终端里的数据目录。它支持关键字、过滤和语义三种模式# 关键字搜索 按平台过滤 datahub search users --filter platformsnowflake --filter entity_typedataset # 只看 URN方便接进脚本 datahub search orders --urns-only # 搜索不返回结果时先诊断索引配置 datahub search diagnose过滤维度示例用途platform--filter platformsnowflake,bigquery按数据源系统筛选逗号分隔为 ORentity_type--filter entity_typedataset,chart按实体类型筛选env--filters {and: [{env: [PROD]}]}区分生产/测试环境tag--filters {not: {tag: [urn:li:tag:Deprecated]}}排除打标的废弃资产用配方文件接入数据源摄入Ingestion是 DataHub 的核心动作写一份 YAML 配方声明从哪读、往哪写再交给 CLI 执行。你也可以在 UI 的 Create Source 面板里直接填表生成同样的配方配方结构固定为sourcesink两段# 最简配方source 声明数据源sink 指向 DataHub 的 REST 端点 source: type: mysql config: host_port: your-host:3306 username: your-username password: your-password sink: type: datahub-rest config: server: http://localhost:8080以上占位值your-xxx替换成你自己的连接信息。仓库里metadata-ingestion/examples/recipes/目录放了 50 多种现成配方可直接参考。常用 source 参数作用include_tables/exclude_tables按schema.table通配符圈定范围include_query_history采集查询历史与查询血缘profiling开启字段级数据统计platform_instance同一平台多实例时的区分名血缘从哪来血缘不需要手工维护主要有三条路接入 dbt 配方自动拿到任务级血缘用 SQL 解析sqlglot从查询历史里推断表级血缘或者通过 OpenLineage 事件在运行时上报。细节可以看仓库里的 lineage 文档。上面加载的示例数据包本身就带完整血缘随便点开一张表就能看上下游。治理术语、域、负责人与数据产品治理动作大多通过 UI 完成也可以通过 CLI 把数据集元数据同步成 YAML 来管理方便走 Git 评审# 把数据集元数据从 DataHub 拉成本地 YAML datahub dataset sync -f dataset.yaml --from-datahub # 修改后推回去支持负责人、描述、标签等字段 datahub dataset sync -f dataset.yaml --to-datahub从上图可以看到DataHub 把所有资产抽象成统一实体数据集、仪表板、ML 模型、用户之间通过血缘、归属、打标等关系连成一张图域Domain和数据产品Data Product则是组织这些实体的两个业务维度。一条链路走通MySQL 接入 → 搜索 → 血缘 → 质量规则这一节用一个真实场景把前文串起来把公司的 MySQL 订单库接进 DataHub然后完成搜索、看血缘、挂质量规则。先创建recipe.yaml# 只需改 source 段的 4 个字段就能适配你自己的环境 source: type: mysql config: host_port: your-db.internal:3306 # ← 改成你的 MySQL 地址 database: orders_db # ← 改成你要采集的库 username: your-readonly-user # ← 建议用只读账号 password: your-password sink: type: datahub-rest config: server: http://localhost:8080 # 本地 quickstart 就是 8080# 执行摄入结束时有一份带成功/失败计数的报告 datahub ingest -c recipe.yaml接下来在 UI 搜索orders_db你会看到库里的每张表都变成了带 schema 预览的实体卡片。如果这些表是由 dbt 或其他任务产出的再补一份 dbt 配方参考 官方摄入文档 的 Next Steps血缘图就会自动补全上下游。最后给核心表挂一条新鲜度规则。DataHub 有一套开放的质量断言规范用 YAML 声明检查逻辑目前支持新鲜度、行数、列级、自定义 SQL、schema 五种类型version: 1 assertions: - entity: urn:li:dataset:(urn:li:dataPlatform:mysql,orders_db.public.orders_db.orders) type: freshness lookback_interval: 6 hours last_modified_field: updated_at schedule: type: interval interval: 6 hours # 每 6 小时检查一次表是否在 6 小时内有更新完整字段说明见仓库的 断言规范文档其中condition还支持between、less_than等比较方式可以按行数波动做告警。上生产前的加固这一节覆盖性能、监控、备份、安全四件事每样只给你最小配置和启用时机。性能默认部署的 OpenSearch 和 JVM 都偏保守数据量上去后搜索会变慢。修改 compose 文件用datahub docker quickstart --quickstart-compose-file指向你自己的文件services: datahub-opensearch-1: environment: - OPENSEARCH_JAVA_OPTS-Xms4g -Xmx4g什么时候需要它当你的实体数超过几万、搜索明显变慢时。监控仓库自带 Prometheus 与 Grafana 配置docker/monitoring/下就有现成的 compose 文件和看板 JSON直接挂到 quickstart 网络里即可采集各组件指标。什么时候需要它开始有多个人依赖这个目录做决策时你要有手段在用户报障前发现 GMS 或索引异常。备份与恢复CLI 内建了三种粒度都是第 2 节 quickstart 命令加参数datahub docker quickstart --backup # 全量备份到 ~/.datahub/quickstart/backup.sql datahub docker quickstart --restore # 恢复主库 重建索引 datahub docker quickstart --restore-indices # 索引损坏时只重建索引注意备份不含时序类数据表统计、profiling 结果升级或演示前养成先--backup的习惯。安全quickstart 使用默认凭据且服务未认证这是开发用的设计。上生产前至少做三件事改掉默认账号见docs/authentication/changing-default-credentials.md、接入 OIDC 单点登录docs/authentication/guides/有完整指南、配置访问策略限制谁能动哪些实体。什么时候需要它一旦要把地址暴露给团队以外的人。高频问题速查 这一节收录部署和摄入阶段最常踩的坑按现象 → 排查 → 修复处理现象排查命令修复动作容器启动卡在 GMS unhealthydocker logs datahub-datahub-gms-quickstart-1 --tail 100检查磁盘/内存是否不足docker system prune -a后重试datahub命令找不到which datahub确认在虚拟环境里或用python3 -m datahub version执行ingest 报连接 8080 被拒绝curl http://localhost:8080服务没起重跑第 2 节的 quickstart 命令搜索结果为空但实体明明在datahub search diagnose索引不同步执行datahub docker quickstart --restore-indices老版本安装升级后起不来查看 CLI 版本先--backup再datahub docker nuke最后重新 quickstart升级后旧 PAT 令牌失效检查令牌创建时间签名密钥每次首启随机生成重新生成个人访问令牌往深里走给元数据模型加自定义字段如果你的团队有平台外字段比如内部风控等级、成本中心DataHub 的元数据模型是开放的用 PDLPegasus 定义语言就能扩展。metadata-models-custom/目录就是放自定义模型的模块最小骨架长这样// 一个挂在数据集上的自定义 aspect namespace com.acryl.custom record complianceInfo { version: int riskLevel: string // 自定义风控等级 costCenter: string // 成本中心 }模型定义好之后摄入配方里多写一段 aspect 即可把值灌进去UI 也会自动展示。完整流程实体级扩展、注册表配置、构建命令见docs/modeling/extending-the-metadata-model.md这里不展开。带走这几条DataHub 的最小闭环是三步datahub docker quickstart起服务、datahub ingest -c recipe.yaml灌元数据、UI 或datahub search消费。配方文件就是元数据接入的 Git 化入口source和sink两段结构适用所有数据源改四个连接字段就能换环境。血缘优先靠 dbt / SQL 解析自动产出别指望手工维护质量断言用开放规范的 YAML 声明方便换执行引擎。quickstart 只适合本地开发生产环境用 Kubernetes 部署备份、OIDC、访问策略在上线前配置。下一步可以把你现有的 dbt 项目或 Airflow 调度接进来从metadata-ingestion/examples/recipes/里找对应配方改一改再把摄入命令挂到 CI 里每天定时跑目录就会跟着管道自动更新。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表