资讯动态

15分钟跑通DataHub元数据管理:3个由浅入深的定制配方

发布时间:2026/9/13 5:30:03 来源:尧图企业网站定制
15分钟跑通DataHub元数据管理3个由浅入深的定制配方【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub周四下午产品来催周五前要把 Snowflake 里所有表的 schema 和 owner 接进公司的 DataHub 元数据管理平台带 PII 后缀的表还要自动打标。以下是在测试机上从拉起环境到做完三个定制的真实流程包括踩过的坑。15分钟拉起本地DataHub并看到第一张表Step 1确认环境。需要 Docker Engine、Docker Compose v2 和 Python 3.10。官方验证过的最低配置是 2 核 CPU、8GB 内存、13GB 磁盘。docker --version docker compose version python3 --versionStep 2安装 DataHub CLI。这是你机器上唯一要装的软件后面所有摄入都靠它。python3 -m pip install --upgrade acryl-datahub datahub versionStep 3一条命令拉起本地实例。这条命令会把 quickstart 的 compose 配置下载到~/.datahub/quickstart然后启动 14 个容器MySQL、OpenSearch、Kafka、GMS、前端等正常网络下 10 分钟左右大头在拉镜像。datahub docker quickstartStep 4让 CLI 指向本地实例并载入示例数据包。示例包里有约 1050 个实体带血缘和词表够你把界面摸熟。datahub init --username datahub --password datahub datahub datapack load showcase-ecommerce你此刻应该看到什么打开 http://localhost:9002用datahub/datahub登录搜索fct_users_created应能看到带 schema、所有权和上游血缘的数据集详情页。不想开浏览器也可以在终端验证datahub search fct_users_created中途想推倒重来datahub docker nuke一键清空再跑一遍 quickstart 即可。原理速览刚才那几条命令背后发生了什么先看整体面貌左边是源源不断接入的源系统右边是 GraphQL、REST、Kafka 三种消费出口中间就是 DataHub 元数据平台本体。再看datahub ingest走的细节链路这张图你只需记住Kafka 的角色类似公司 OA 公告栏——所有元数据变更先贴到公告栏上GMS 再把公告归档进 MySQL唯一事实源和搜索索引UI 和 API 读的都是归档结果。核心概念用一张表对完概念一句话解释项目里长什么样Entity数据资产的基本单元Dataset、Dashboard、CorpUserAspect实体上的一组属性ownership、schemaMetadata各是一个 PDL recordURN实体的全局唯一标识urn:li:dataset:(urn:li:dataPlatform:snowflake,...)MCE / MCL变更提案 / 变更记录事件Kafka 上的两类 Avro 消息细节可以看 架构总览现在不用通读用到再回来查。定制一给摄入的表自动打标签、挂业务域需求Snowflake 摄入之后表名带 pii 的自动贴pii标签全部挂到analytics域。不用改任何源码正路是在 Recipe 里加 transformer元数据流过时顺手加工。这段只干一件事定义数据源和落点。source: type: snowflake config: account_id: xy12345 username: ${SNOWFLAKE_USER} password: ${SNOWFLAKE_PASSWORD} database_pattern: allow: [ANALYTICS] sink: type: datahub-rest config: server: http://localhost:8080这段只干一件事声明两个转换——模式匹配打标、批量挂域。transformers: - type: simple_add_dataset_globaltags config: tag_urns: [urn:li:tag:pii] - type: simple_add_domain config: domains: [urn:li:domain:analytics]跑datahub ingest -c recipe.yml然后打开对应数据集页面验证标签栏出现pii属性面板的 Domain 一栏出现 analytics 域。内置 transformer 全家桶和参数在 transformer 文档。⚠️ 坑你写进去的 URN标签、域、owner必须已经在实例里存在transformer 不会自动创建这些实体。URN 不存在时标签静默失效页面上什么都看不出来记得先在 UI 里把标签建好。定制二加一个自定义Aspect给数据集存数据质量分需求夜间跑质量引擎给每张表打个分想把这个分数存进 DataHub又不想动核心模型。轻量路径是metadata-models-custom模块不碰主仓库的模型构建出来当插件部署。需要动主仓库的仓库地址在这里git clone https://gitcode.com/GitHub_Trending/da/datahub这段只干一件事定义新 Aspect 的 PDL。namespace com.company.metadata.aspect Aspect { name: dataQualityScore } record DataQualityScore { score: double lastEvaluated: long }这段只干一件事在实体注册表里声明这个 Aspect 挂到 dataset 上。id: mycompany-dq-model entities: - name: dataset aspects: - dataQualityScore这个文件放在metadata-models-custom/registry/entity-registry.yaml。注册表和实体、切面之间的关系长这样然后构建并安装插件cd metadata-models-custom ../gradlew build cd .. ./gradlew :metadata-models-custom:modelDeploy安装完重启 GMS 容器让它加载新模型再查配置端点确认加载成功docker restart datahub-datahub-gms-quickstart-1 curl -s http://localhost:8080/config | jq .models输出里mycompany-dq-model下loadResult: SUCCESS即成功。模块自带示例脚本进metadata-models-custom/scripts目录跑./insert_one.sh再datahub get --urn urn就能看到 dataQualityScore 字段已经写进去了。⚠️ 坑PDL 要求文件名与 record 名一致、目录路径与 namespace 一致任何一处对不上构建直接失败。上面这个例子文件必须放在src/main/pegasus/com/company/metadata/aspect/DataQualityScore.pdl。到底该 fork 主仓库还是用自定义模型模块的完整决策树见 扩展元数据模型文档 和 metadata-models-custom 说明。定制三把dev环境的元数据变更同步到prod需求dev 环境拿来试跑owner 和 schema 的变更要秒级反映到 prod 实例不想两边各跑一遍摄入。正路是 datahub-actions 框架订阅源环境的 Kafka 变更流把匹配的事件经 HTTP 转发给目标 GMS。配置十几行这段只干一件事订阅变更流并转发。source: type: kafka config: connection: bootstrap: ${KAFKA_BOOTSTRAP_SERVER:-localhost:9092} schema_registry_url: ${SCHEMA_REGISTRY_URL:-http://localhost:8081} filter: event_type: MetadataChangeLogEvent_v1 action: type: metadata_change_sync config: gms_server: ${DEST_DATAHUB_GMS_URL} gms_auth_token: ${DEST_DATAHUB_GMS_TOKEN} aspects_to_include: [schemaMetadata, ownership, domain]这张图你只需记住actions 是个中转站读源环境的变更公告再转帖给目标 GMS不碰数据本身。验证方式在 dev 端改一个数据集的 owner几秒内 prod 端同一数据集的 owner 跟着变。quickstart 的 compose 文件已内置 actions 容器把这份配置挂进去、配好环境变量即可带注释的完整样例看 metadata_change_sync.yaml。⚠️ 坑目标实例如果开了元数据服务认证而gms_auth_token没配每条写入都是 401另外源环境有自定义 aspect比如你刚加的质量分时目标端必须先把模型插件部署好否则对应 aspect 会被拒收。上生产前对照这张表quickstart 只适合试跑生产要走 Kubernetes 部署官方 K8s 指南 有完整步骤。切换前把这张表过一遍关注点建议做法为什么安全更换全部默认凭据开启元数据服务认证quickstart 全是默认口令端口默认绑定所有网卡安全OIDC 单点登录 按域最小权限的自定义策略内置三种角色粒度不够编辑权要按域圈定性能搜索集群 3 节点起单分片 ≤50GB搜索是元数据查询主链路分片过大查询延迟陡增性能Kafka 消息保留 ≥7 天actions 或消费者故障后能恢复回放高可用独立 MySQL 主从 定期--backup单机 MySQL 无容灾且备份不含时序数据高可用K8s 集群 ≥3 节点无状态组件多副本GMS 和前端可水平扩容、支持滚动升级补充两句备份要做一次恢复演练不能恢复的备份等于没有升级前习惯性跑一次datahub docker quickstart --backup给自己留退路。你可以接着做写第一个源过滤与数据探查配置recipe_overview试 UI 无代码摄入建源、排期、一键运行docs/ui-ingestion.md深入元数据模型扩展含自定义 Aspect 的前端自动渲染extending-the-metadata-model本地实例起不来时的排障手册docs/troubleshooting/quickstart.md下期聊聊 DataHub 和 Apache Atlas 的选型差异——已有 Hadoop 家底的团队该怎么选从零起步又该看哪几条指标。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价