
DataHub UI 无代码元数据摄取实战指南从权限配置、定时同步到故障排查【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub本文围绕 DataHub 的UI 元数据摄取Metadata Ingestion功能展开你将在不做任何代码开发的前提下通过界面向导连接 Snowflake、BigQuery、MySQL、Kafka 等数据源按计划自动把表结构、血缘、使用统计与数据质量信息拉入 DataHub并学会如何用 Secrets 安全托管凭据、监控运行状态与排查失败。读完本文你将掌握一条从权限准备、创建摄取源、调度执行到日志排障的完整闭环并理解 UI 配置背后 GraphQL API 与调度器的实现原理。什么是元数据摄取DataHub 的价值在于帮助团队发现并理解组织内的数据资产。实现这一目标的关键机制就是metadata ingestion元数据摄取由 DataHub 自动从各类数据系统中收集元数据无需人工登记。UI 摄取可以自动拉取的信息包括表名与列名来自各类数据库的结构信息构成数据集目录的基础资产血缘Asset Lineage展示信息如何在系统之间流转支撑影响分析使用统计Usage Statistics揭示哪些数据集最常被查询、最受欢迎数据质量信息包括新鲜度freshness与完整性completeness业务上下文如负责人ownership与文档documentation。正因为如此DataHub 可以轻松对接 Snowflake、BigQuery、dbt 等主流平台并通过界面编排自动更新计划与安全托管凭据。本文描述的 UI 流程与 YAML 配方在 DataHub 中是同一套执行模型无论是 UI 表单生成的 recipe还是手工编写并通过 CLI/GraphQL 上传的 recipe最终都会交给摄取执行器以 Python 方式运行详见下文“YAML 高级配置”与 ingestion executor 安全说明。前置条件与权限要在 DataHub 中管理元数据摄取首先需要具备相应权限。权限体系分为“平台级管理权限”与“资源级策略”两种授予方式。方式一管理员级别访问为获得全部摄取源的完整管理权限用户需要被授予以下平台特权platform privileges特权作用Manage Metadata Ingestion提供创建、编辑、运行、删除所有摄取源的完整访问能力Manage Secrets允许创建和管理用于摄取配置的加密凭据授予途径有两种Admin 角色分配被分配到Admin Role的用户默认即拥有上述两项特权自定义策略授予平台特权创建 自定义策略将Manage Metadata Ingestion与Manage Secrets两项平台特权授予特定用户或用户组。⚠️仅授予可信操作者Manage Metadata Ingestion意味着你可以在 摄取执行器 上定义并运行 recipe。这些 recipe 会以 Python 形式运行在该进程中包括自定义 source 类型、transformer、Kafkaoauth_cb回调以及在非锁定镜像上安装额外 pip 包。因此请把该特权视同“可在执行器上执行代码”的能力而不仅仅是“创建一个 Snowflake 数据源”。方式二资源级策略细粒度控制需要更细粒度控制时管理员可以创建仅针对Ingestion Sources摄取源生效的 自定义策略让不同用户拥有不同层级的访问能力View查看查看摄取源配置与运行历史Edit编辑修改摄取源配置即执行器将要运行的 recipeDelete删除删除摄取源Execute执行按需运行摄取源。与Edit组合时等同于Manage Metadata Ingestion的代码执行能力但作用范围被限定在这些摄取源上。启用前置条件DataHub Core开启VIEW_INGESTION_SOURCE_PRIVILEGES_ENABLED特性开关feature flagDataHub Cloud联系客户成功团队开通该特性。⚠️重要提醒一旦启用该特性开关任何作用于“All全部”资源类型的策略都将把 Ingestion Sources 纳入范围包括默认的只读策略。这会让 Ingestion 页签可见并可能根据所应用的特权产生可操作能力。如果你的环境中存在不应暴露“数据源页面”的纯查看策略请谨慎启用此开关。创建 Ingestion Source摄取源获得相应权限后进入 DataHub 的Ingestion页签。页面会列出当前所有处于启用状态的Ingestion Sources。这里的“摄取源”代表一个已配置好的、通往外部数据系统的连接——DataHub 正是通过它抽取元数据。初次使用时列表为空接下来四步即可创建第一个摄取源。从前端源码 IngestionSourceBuilderModal.tsx 可以看出整个向导被组织为四个步骤组件SelectTemplateStep选择数据源→DefineRecipeStep配置连接→CreateScheduleStep同步计划→NameSourceStep命名完成与下述操作一一对应。第 1 步选择数据源点击 Create source开始创建。随后选择要连接的数据源类型DataHub 为热门平台提供了预置模板pre-built templates数据仓库Data WarehousesSnowflake、BigQuery、Redshift、Databricks数据库DatabasesMySQL、PostgreSQL、SQL Server、Oracle商业智能BILooker、Tableau、PowerBI流式StreamingKafka、Pulsar以及其他更多平台……选择与你的数据源匹配的模板即可。如果列表中没有你的平台可以选择Custom自定义手动配置 source但这需要更多的技术知识。这些模板并非空壳仓库中的 sources.json 为每个平台预置了可直接运行的 recipe 骨架。例如 BigQuery 模板默认启用表/视图、血缘、使用统计与表级 profiling并开启状态化摄取source: type: bigquery config: include_table_lineage: true include_usage_statistics: true include_tables: true include_views: true profiling: enabled: true profile_table_level_only: true stateful_ingestion: enabled: trueRedshift 模板则给出了坐标host_port、database、凭据占位username: null、血缘模式table_lineage_mode: stl_scan_based等字段方便直接对照填写。第 2 步配置连接详情选择模板后需要配置 DataHub 如何连接并抽取元数据界面会以用户友好的表单呈现名称与负责人Name and Owners为摄取源起一个便于团队识别的描述性名称可指定Users和/或Groups作为该摄取源的负责人。默认情况下创建者本人会被设为负责人创建后可随时增改连接信息Connection Information按表单填写连接详情具体字段因平台而异通常包括主机/服务器地址与端口数据库或项目名称认证凭据。资产过滤器Asset Filters配置要抽取的元数据范围纳入哪些数据库、schema 或表排除某些数据的过滤选项。摄取设置Ingestion Settings配置 profiling、过期元数据处理以及其他运行设置。默认值对大多数场景而言即为最佳实践。用 Secrets 管理敏感信息生产环境中密码、API Key 等敏感信息应当通过 DataHub 的Secrets密钥功能安全存储。创建 Secret 的步骤进入 Ingestion 界面中的Secrets页签点击Create new secret提供一个描述性名称例如BIGQUERY_PRIVATE_KEY输入敏感值可选添加描述点击Create。创建完成后在摄取配置表单的凭据字段处可通过下拉菜单直接引用这些 Secret。前端的 Secret 创建界面位于 SecretBuilderModal.tsx而sources.json中大量模板采用${MYSQL_PASSWORD}、${MCD_TOKEN}这类占位符写法正是为了在表单中替换为已注册的 Secret。安全说明DataHub 默认安全。GMS 会设置SECRET_SERVICE_CALLER_GUARD_MODEENFORCE从而阻止浏览器会话和用户个人访问令牌PAT通过 GraphQL 调用getSecretValues。拥有Manage Secrets特权的用户仍可创建、更新、删除 Secret但无法通过 API 读取明文值——除非管理员放宽该守卫例如分阶段上线时设置为AUDIT。当计划任务中的 UI 摄取源运行时Secret 由可信工作进程解析OSS 版中是 datahub-actions使用系统客户端凭据DataHub Cloud 中则是内嵌执行器使用 Remote Executor 访问令牌。UI Secret 在服务端解密后会在任务执行时通过 DataHub APITLS发送给该工作进程。对安全敏感的场景建议改用 本地 Secret 后端 而非 DataHub UI Secrets。测试连接继续之前务必验证 DataHub 能否成功连到数据源。大多数摄取源表单都提供Test Connection测试连接按钮用于校验到数据源的网络连通性认证凭据是否正确是否具备元数据抽取所需的权限。如果连接测试失败请检查DataHub 与数据源之间网络是否可达凭据是否正确且具备足够权限防火墙规则是否放行该连接。高级设置Advanced Settings需要更多控制力时可在 Advanced Settings 区域配置CLI Version指定用于执行摄取的 DataHub CLI 具体版本Environment Variables为摄取进程设置自定义环境变量Extra pip packages运行时安装额外的 Python 包在锁定执行器镜像上不可用Executor ID按需配置远程执行Debug Mode启用详细日志以便排障。其中“额外 pip 包”与镜像的关系值得展开仓库 ingestion-executor-security.md 说明*-locked锁定镜像基于预构建的捆绑虚拟环境DATAHUB_BUNDLED_VENV_PATH默认/opt/datahub/venvs运行时镜像中已移除pip与uv并将默认包索引 URL 指向不可用的 localhost 端点作为纵深防御。因此在锁定镜像上无法运行时pip install新增连接器需用捆绑 venv 构建器BUNDLED_VENV_PLUGINS、BUNDLED_CLI_VERSION重新构建镜像详见 捆绑摄取虚拟环境。第 3 步同步计划Sync Schedule配置 DataHub 从数据源同步元数据的频率。可以通过开关启用或禁用计划执行推荐启用从而在无需人工干预的情况下保持元数据最新。如果你更倾向手动或按需运行也可以完全跳过调度步骤。第 4 步审查并保存审查全部配置无误后有两种保存方式Save仅保存摄取源配置不立即执行Save and Run保存并立即执行首次摄取。运行与监控摄取执行摄取源创建完成后点击摄取源上的Play播放按钮即可运行。稍等片刻摄取源的Last Status最近状态列会变为Running表示 DataHub 已成功将摄取任务入队。摄取成功后状态会以绿色显示Success。查看运行历史Run HistoryRun History页签展示所有摄取运行的完整历史你可以查看全部运行浏览所有摄取源的全部执行记录检查近期活动运行记录按时间倒序排列最新在前按源过滤使用下拉框筛选某个特定摄取源的运行记录从 Sources 页签进入点击任一源的Last Run状态或从源菜单选择View Run History。这让你可以持续追踪摄取表现并在问题发生时及时排查。查看摄取结果摄取成功后可查看被抽取实体的详细信息点击完成运行的Success状态按钮选择View All查看被摄取实体的列表点击单个实体校验抽取出的元数据。取消正在运行的摄取如果某个摄取运行耗时过长或疑似卡住可点击运行中任务上的Stop停止按钮取消它。这在以下场景尤其有用网络超时摄取源自身缺陷bug资源受限。排查失败的摄取常见失败原因运行失败时源列表中会出现失败状态指示。常见失败原因包括配置错误连接详情不正确、必填字段缺失或参数值非法认证问题凭据错误、令牌过期或权限不足网络连通性DNS 解析失败、防火墙拦截或数据源不可达Secret 解析问题引用的 Secret 不存在或名称写错资源限制内存限制、超时或处理能力不足。查看详细日志要诊断失败原因点击运行历史中的状态Failed、Aborted即可查看并下载完整的摄取运行日志。日志提供了连接尝试与错误认证失败信息数据抽取进度错误消息与堆栈轨迹stack traces。已开启认证的 DataHub 实例如果你的 DataHub 实例启用了 Metadata Service Authentication则需要在配置中提供Personal Access Token个人访问令牌。YAML 高级配置超越 UI 表单UI 表单足以覆盖大多数常见摄取场景但高级用户可能仍需要直接编写 YAML 配置典型场景包括UI 中未提供的自定义摄取源复杂转换管道transformation pipelines高级过滤与处理逻辑与外部系统的集成。需要再次强调信任边界YAML recipe 同样以 Python 形式在摄取执行器上运行自定义source.type、transformer 以及 Kafkaoauth_cb等回调都可以导入执行器上已有的代码。请只将Manage Metadata Ingestion或 EditExecute授予可信操作者——参见 Ingestion executor 安全。关于 YAML 配置的完整语法与示例请参阅 Recipe Overview 指南。通过 CLI 部署 Recipe可以使用 CLI 上传摄取 recipeingest deploy子命令详见 CLI 文档datahub ingest deploy --name My Test Ingestion Source --schedule 5 * * * * --time-zone UTC -c recipe.yaml该命令的参数与 UI 表单一一对应--name指定摄取源名称--schedule为 Quartz 风格 cron 表达式上例为每小时的第 5 分钟执行--time-zone指定时区-c指向本地 recipe 文件。通过 GraphQL 创建摄取源也可以直接使用 DataHub 的 GraphQL API 的createIngestionSourcemutation 创建摄取源mutation { createIngestionSource( input: { name: My Test Ingestion Source type: mysql description: My ingestion source description schedule: { interval: */5 * * * *, timezone: UTC } config: { recipe: {\source\:{\type\:\mysql\,\config\:{\include_tables\:true,\database\:null,\password\:\${MYSQL_PASSWORD}\,\profiling\:{\enabled\:false},\host_port\:null,\include_views\:true,\username\:\${MYSQL_USERNAME}\}},\pipeline_name\:\urn:li:dataHubIngestionSource:f38bd060-4ea8-459c-8f24-a773286a2927\} version: 0.8.18 executorId: mytestexecutor } } ) }注意通过 GraphQL 传递时recipe 必须进行双引号转义如上例中的\。源码视角摄取源的创建与调度从实现层面看UI、CLI 与 GraphQL 最终都汇聚到同一套后端流程GraphQL resolvercreateIngestionSource与updateIngestionSource均注册在 GmsGraphQLEngine.java由 UpsertIngestionSourceResolver.java 统一处理。它首先通过IngestionAuthUtils.canManageIngestion校验MANAGE_INGESTION特权创建新源时会生成 UUID 作为DataHubIngestionSourceKey再以 Metadata Change ProposalMCP的形式把DataHubIngestionSourceInfo类型、名称、recipe、CLI 版本、executorId、调试模式、额外参数与调度信息写入实体图Cron 校验与转换resolver 在保存调度信息前会先用 Spring 的CronExpression校验 cron 合法性并用ZoneId.of校验时区由于 Spring 只支持 6 段 cron5 段 cronQuartz 风格会被自动加上前缀0即秒位——该逻辑与 IngestionScheduler.java 中的调整逻辑保持一致两个入口对调度的语义完全统一调度执行计划任务的运行由ingestion-scheduler模块负责它从 GMS 轮询各摄取源的调度信息按 cron 表达式在对应时区触发执行请求。常见问题FAQ为什么在 Docker 环境中摄取会报 Failed to Connect 错误如果你使用datahub docker quickstart运行 DataHub 且遭遇连接失败可能是网络配置问题——摄取执行器无法触达 DataHub 的后端服务。尝试将摄取配置中的连接地址改为Docker 内部 DNS 名称例如用datahub-gms等服务名代替localhost而不是宿主机的localhost。状态显示为短横线-是什么意思如何修复如果摄取源状态一直显示-且从未变为Running可能意味着该源从未被触发运行——点击 Play 按钮执行即可datahub-actions 执行器未运行或不健康仅 DataHub Core 用户。如果点击 Play 仍不生效DataHub Core 用户应诊断 actions 容器用docker ps检查容器状态用docker logs container-id查看执行器日志必要时重启 actions 容器。何时应该用 CLI/YAML 而不是 UI 摄取考虑改用 CLI 摄取的情况数据源无法从 DataHub 所在网络触达DataHub Cloud 场景可使用 remote executors需要 UI 模板不具备的自定义摄取逻辑摄取过程需要访问本地文件系统希望将摄取任务分散到多个环境执行需要复杂转换或自定义元数据处理。更多资源Recipe 文档完整的 YAML 配置参考覆盖所有 source 类型与配置项执行器安全Ingestion executor 安全与加固了解锁定镜像、包索引控制与信任边界远程执行器设置远程摄取执行器适用于数据源与 DataHub 网络隔离的场景CLI 命令datahub CLI 文档其中ingest deploy支持从命令行上传 recipe。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考