数据治理的集成、调度、安全、展现、服务、治理

前瞻

前面分别部署了SeaTunnelDolphinSchedulerAPISIXJimuReportSqlrestOpenMetadata、正好覆盖了数据治理的集成、调度、安全、展现、服务、治理六个核心环节。下面我按照数据治理的生命周期逻辑,为你串联一套可操作的使用教程。

使用

阶段一:元数据治理(OpenMetadata 为核心)

目标:建立统一的数据资产目录,让所有数据"可查、可懂、可信"。

1.1 接入数据源(元数据采集)

文档地址

OpenMetadata中,你需要将核心数据源(MySQL)的元数据接入:

  1. 登录 OpenMetadata Web UI (http://192.168.177.24:8585)

  2. 进入 Settings(设置) → Services(服务) → Databases(数据库)

  3. 点击 Add New Service,选择 MySQL

  4. 配置连接信息:

    • Service Name: dolphinscheduler数据
    • Host and Port: 192.168.177.21:3306
    • Database: dolphinscheduler(以及你所有业务库)
    • Username/Password: 使用之前创建的专用账号

点击 Test Connection(测试连接)按钮,验证配置是否正确。通过后,点击 Save 保存服务

  1. 配置 Metadata Ingestion 管道,设置调度频率(如每天凌晨2点)
    服务创建完成后,会进入服务详情页,我们在这里配置真正执行采集任务的 Agent。
    (1) 进入代理配置:在服务详情页,点击 Agents(代理)选项卡,然后点击Add Agent-> Add Metadata Agent(添加元数据代理)。
    (2) 配置采集范围与选项:你可以通过正则表达式来精准控制采集的范围,避免全量扫描带来的性能压力:

    • Database / Schema / Table Filter Pattern:通过“包含”(Include)和“排除”(Exclude)规则,决定要采集哪些数据库、模式或表。
    • 配置开关:还可以通过开关控制是否采集视图(Include Views标签(Include Tags,是否开启调试日志(Enable Debug Log 等。
      (3)设定调度计划并部署:最后一步是设置采集任务何时运行。你可以选择预设的每小时、每天、每周,或创建自定义的 Cron 表达式,然后点击 Add & Deploy
      部署成功后,这个采集任务就会按照你的调度计划自动运行了。你可以在 Agents 标签页查看它的运行状态和历史记录,也可以随时手动触发一次立即运行(Run)。
  2. 运行一次 IngestionOpenMetadata 会自动扫描并导入所有表、列、索引等元数据

如果账号权限不够可能采集失败,比如mysql需要访问mysql.general_logmysql.slow_log,需要单开权限

-- 创建用户(如果已存在,请先删除或跳过此步)
CREATE USER IF NOT EXISTS 'openmetadata_user'@'%' IDENTIFIED BY 'your_strong_password';

-- 授予 OpenMetadata 对元数据库的完整权限
GRANT ALL PRIVILEGES ON openmetadata_db.* TO 'openmetadata_user'@'%';

-- ⭐ 关键步骤:授予查询 general_log 和 slow_log 的权限(用于数据血缘)
GRANT SELECT ON mysql.general_log TO 'openmetadata_user'@'%';
GRANT SELECT ON mysql.slow_log TO 'openmetadata_user'@'%';

-- 刷新权限使其生效
FLUSH PRIVILEGES;

1.2 建立业务术语表(Glossary)

为了让团队对数据有统一理解,可以建立业务术语表

  1. 进入 Governance(治理) → Glossaries(术语库)

  2. 创建核心术语,例如:

    • 订单金额:定义"用户下单的实际支付金额,含税"

    • 活跃用户:定义"近30天有登录行为的用户"

  3. 将术语与具体的表和字段关联起来
    可以在添加表结构是,在术语列关联术语


1.3 定义数据角色与权限

  • 角色
    角色主要使用管理菜单权限的。
    路径:设置 → 用户角色 →添加角色
  • 权限策略
    OpenMetadata 提供了细粒度的权限控制,你可以创建以下角色
角色 权限范围 适用人员
Data Steward(数据管家) 可创建术语表、添加标签、编辑所有数据资产的描述 数据治理负责人
Data Analyst(数据分析师) 可查看表和列、查看数据概要、查询历史,但不接触原始数据 业务分析师
Data Engineer(数据工程师) 可创建数据源连接、管理Ingestion管道、编辑数据血缘 数据开发人员
Data Consumer(数据消费者) 仅可浏览和搜索数据资产 业务人员、管理层

创建策略的路径:Settings(设置) → Roles(团队) →选择策略tab → Create Policy

1.4 建立数据血缘(Data Lineage

OpenMetadata 支持自动捕获表、管道、仪表盘之间的数据流转关系。你可以:

  1. OpenMetadata 中查看任意一张表的 Lineage(血缘关系) 选项卡
  2. 可以看到该表从哪个源表来,经过哪些转换,又被哪些下游表或报表使用
  3. 这对于影响分析(某张表要改结构,会影响哪些下游)非常有用
#需要开启general_log :
mysql> SHOW VARIABLES LIKE 'general_log%';
+------------------+------------------------------------+
| Variable_name    | Value                              |
+------------------+------------------------------------+
| general_log      | OFF                                |
| general_log_file | /mnt/data/mysql/192-168-177-21.log |
+------------------+------------------------------------+

阶段二:数据集成与调度(SeaTunnel + DolphinScheduler)

目标:构建可编排、可监控的自动化数据管道。

2.1 在 DolphinScheduler 中使用 SeaTunnel

根据你的部署方式(Docker Compose),需要确保 DolphinScheduler Worker 容器能访问 SeaTunnel

  1. 进入UI界面http://192.168.177.23:12345/dolphinscheduler/ui/security/environment-manage

  2. 安全中心 →环境管理添加环境,并在环境配置中添加如下:

export SEATUNNEL_HOME=/opt/seatunnel
export PATH=$SEATUNNEL_HOME/bin:$PATH

2.2 创建 SeaTunnel 数据同步任务

在 DolphinScheduler Web UI 中:

  1. 进入 项目管理 → 工作流定义 → 创建工作流

  2. 拖拽一个 SeaTunnel 任务节点到画布

  3. 配置任务参数:

  • 环境选择刚才配置的


  • 启动脚本选择setunnel.sh
  • 部署方式选择cluster
  • 自定义配置参考如下:
env {
  parallelism = 4              // 并行度,提高读取写入效率
  job.mode = "BATCH"           // 指定为批处理模式
}

source {
  Jdbc {
    url = "jdbc:mysql://192.168.177.58:3306/low_code"
    driver = "com.mysql.cj.jdbc.Driver"
    username = "root"
    password = "密码"
    # 方式1: 使用 query 指定全量读取的SQL
    query = "SELECT * FROM share_car_apply"
    # 方式2: 使用 table_path 并配合分片以提升大表性能
    # table_path = "public.源表名"
    # partition_column = "id"   // 分片字段,建议用主键
    # split.size = 5000        // 每分片读取行数
  }
}

sink {
  Jdbc {
    url = "jdbc:mysql://192.168.177.21:3306/data_warehouse"
    driver = "com.mysql.cj.jdbc.Driver"
    username = "root"
    password = "密码"
    #query = "INSERT INTO share_car_apply (字段1, 字段2) VALUES (?, ?)" 
    # 或者使用以下自动模式,让SeaTunnel生成SQL
    generate_sink_sql = true
    database = "data_warehouse"
    table = "share_car_apply"
  }
}
  1. 保存并上线工作流
  2. 设置定时调度(如每天凌晨3点全量同步)

2.3 关键集成经验

根据实际部署经验,以下几个点需要特别注意:

  • 环境变量必须在所有 Worker 节点配置DolphinScheduler 的任务可能分配到任意 Worker,因此每个 Worker 都需要能访问 SeaTunnel

  • 测试先行:先用 seatunnel.sh --config job.conf -m local 在本地验证作业正确性,再通过 DolphinScheduler 调度

  • 日志查看:任务执行后,在 DolphinScheduler 任务实例中点击"查看日志",会显示 SeaTunnel 的详细执行信息


阶段三:数据安全与流量治理(APISIX

APISIX 的核心工作模式很简单:通过 Route(路由) 匹配请求,然后转发给 Upstream(上游服务)
目标:为所有数据服务提供统一的认证、限流、审计能力。

  • Route (路由):定义了匹配请求的规则,比如路径是 /ip

  • Upstream (上游):定义了实际的业务服务地址,比如 httpbin.org:80

3.1 将数据服务接入 APISIX

SqlrestJimuReport都可以通过 APISIX 作为统一流量入口,提供集中式的安全管控:

  1. APISIX Dashboard 或通过 Admin API 创建路由,将 /api/* 转发到 sqlrest服务(http://192.168.177.24:8091

  2. /report/* 转发到 JimuReport(http://192.168.177.24:8085

3.2 启用关键安全插件

APISIX 提供了丰富的安全插件,可以按需启用:

插件 功能 配置路径
key-auth 为 API 接口增加 API Key 认证 路由级别启用
limit-req 限流,防止恶意刷接口 全局或路由级别
ip-restriction IP 黑白名单 限制仅内网或特定 IP 访问
prometheus 监控指标采集 导出请求量、延迟等指标
kafka-logger 将请求日志发送到 Kafka,用于审计分析 集中日志存储

3.3 数据脱敏与审计

参考新氧科技的实践,APISIX 可以实现敏感数据的动态脱敏:

  • 通过自定义插件,对 API 响应中的手机号、身份证号等字段进行脱敏(如 138****1234
  • 记录每次 API 调用的完整上下文(谁、何时、调用了什么接口、返回了什么数据),满足合规审计需求

阶段四:数据服务与报表展现(DBApi + JimuReport)

目标:将治理好的数据通过 API 和报表的形式对外提供服务。

4.1 使用 DBApi 暴露数据 API

DBApi是一个低代码的 API 生成工具,可以让业务人员直接通过 SQL暴露数据接口:

  1. 登录 DBApi (http://192.168.177.24:8520)

  2. 配置数据源:连接你的 MySQL192.168.177.22

  3. 创建一个 API接口:

    • 编写 SQL(如 SELECT * FROM orders WHERE create_date >= #{startDate}

    • 系统自动生成RESTful API 接口地址

    • 发布后,业务系统即可通过 HTTP 调用获取数据

  4. DBApi 的接口地址通过 APISIX 统一对外暴露

4.2 使用 JimuReport制作财务报表

JimuReport适合制作复杂的中国式报表:

  1. 登录 JimuReport (http://192.168.177.24:8085/jmreport/list),默认账号 admin/123456
  2. 创建数据集:通过 SQLMySQL 查询数据
  3. 使用类Excel 设计器制作报表模板(支持复杂表头、交叉表、汇总计算)
  4. 发布报表,通过 APISIX对外提供访问

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容