Dinky与DolphinScheduler集成实践指南

Dinky与DolphinScheduler集成实践指南

dinky Dinky is an out-of-the-box, one-stop, real-time computing platform dedicated to the construction and practice of Unified Streaming & Batch and Unified Data Lake & Data Warehouse. Based on Apache Flink, Dinky provides the ability to connect many big data frameworks including OLAP and Data Lake. dinky 项目地址: https://gitcode.com/gh_mirrors/di/dinky

前言

在现代大数据处理场景中,任务调度系统扮演着至关重要的角色。本文将详细介绍如何将Dinky与DolphinScheduler进行集成,实现Flink任务的自动化调度管理。通过这种集成,用户可以充分利用Dinky强大的Flink开发能力和DolphinScheduler优秀的调度能力,构建高效的数据处理流水线。

环境准备

系统要求

  • DolphinScheduler:3.2.1及以上版本
  • Dinky:1.0.0及以上版本
  • Docker:19.03及以上版本(用于快速部署DolphinScheduler)

DolphinScheduler部署

对于快速体验和测试环境,推荐使用Docker方式部署DolphinScheduler:

export DOLPHINSCHEDULER_VERSION=3.2.1
docker run --name dolphinscheduler-standalone-server \
           -p 12345:12345 \
           -p 25333:25333 \
           -d apache/dolphinscheduler-standalone-server:"${DOLPHINSCHEDULER_VERSION}"

部署完成后,通过浏览器访问http://<服务器IP>:12345/dolphinscheduler/ui/login,使用默认账号admin/dolphinscheduler123登录。

基础配置

  1. 创建租户

    • 进入"安全中心" → "租户管理" → "创建租户"
    • 建议为Dinky集成创建专用租户
  2. 用户管理

    • 进入"安全中心" → "用户管理"
    • 创建新用户或修改现有用户,将其关联到上一步创建的租户
  3. 生成访问Token

    • 进入"安全中心" → "令牌管理" → "创建令牌"
    • 设置合理的过期时间并保存生成的Token

Dinky配置

服务启动

假设Dinky安装在/opt/dinky-1.0.0目录下:

cd /opt/dinky-1.0.0
./auto.sh start 1.16

启动后访问http://<服务器IP>:8888,使用默认账号admin/admin登录。

DolphinScheduler集成配置

  1. 进入"配置中心" → "全局配置" → 选择"DolphinScheduler配置"标签页
  2. 配置关键参数:
    • DolphinScheduler地址http://<DS服务器IP>:12345/dolphinscheduler
    • DolphinScheduler Token:前面步骤生成的Token
    • 项目名称:默认为Dinky,可根据需要修改
    • 启用状态:设置为"是"

实践示例

创建FlinkSQL任务

  1. 进入"数据开发" → "项目" → 右键目录 → "创建任务"
  2. 选择任务类型为FlinkSQL,填写任务名称
  3. 在编辑器中输入示例SQL:
-- 基础配置
set execution.checkpointing.checkpoints-after-tasks-finish.enabled=true;
SET pipeline.operator-chaining=false;
set state.backend.type=rocksdb;
set execution.checkpointing.interval=8000;
set state.checkpoints.num-retained=10;
set cluster.evenly-spread-out-slots=true;

-- 创建源表
DROP TABLE IF EXISTS source_table3;
CREATE TABLE IF NOT EXISTS
  source_table3 (
    `order_id` BIGINT,
    `product` BIGINT,
    `amount` BIGINT,
    `order_time` as CAST(CURRENT_TIMESTAMP AS TIMESTAMP(3)), 
    WATERMARK FOR order_time AS order_time - INTERVAL '2' SECOND
  )
WITH
  (
    'connector' = 'datagen',
    'rows-per-second' = '1',
    'fields.order_id.min' = '1',
    'fields.order_id.max' = '2',
    'fields.amount.min' = '1',
    'fields.amount.max' = '10',
    'fields.product.min' = '1',
    'fields.product.max' = '2'
  );

-- 创建目标表
DROP TABLE IF EXISTS sink_table5;
CREATE TABLE IF NOT EXISTS
  sink_table5 (
    `product` BIGINT,
    `amount` BIGINT,
    `order_time` TIMESTAMP(3),
    `one_minute_sum` BIGINT
  )
WITH
  ('connector' = 'print');

-- 数据处理逻辑
INSERT INTO
  sink_table5
SELECT
  product,
  amount,
  order_time,
  SUM(amount) OVER (
    PARTITION BY
      product
    ORDER BY
      order_time
      RANGE BETWEEN INTERVAL '1' MINUTE PRECEDING
      AND CURRENT ROW
  ) as one_minute_sum
FROM
  source_table3;

任务配置与发布

  1. 在右侧"任务配置"面板中配置相关参数:

    • 执行模式(Session/Per-Job)
    • 集群配置
    • 检查点设置等
  2. 点击"发布"按钮将任务发布到Dinky服务器

  3. 发布成功后,点击"推送"按钮将任务推送到DolphinScheduler

  4. 在推送配置中:

    • 设置任务优先级
    • 配置任务失败策略
    • 设置前置依赖关系(可选)

DolphinScheduler侧操作

  1. 进入"项目管理" → "Dinky"项目 → "工作流定义"
  2. 查看从Dinky推送过来的任务
  3. 将工作流上线并执行:
    • 支持手动立即执行
    • 可配置定时调度策略
    • 支持工作流依赖管理

最佳实践建议

  1. 资源规划

    • 为Dinky集成创建专用租户和项目
    • 合理设置任务优先级和资源配额
  2. 任务设计

    • 复杂任务建议拆分为多个子任务
    • 合理设置任务依赖关系
    • 避免循环依赖
  3. 监控与告警

    • 利用DolphinScheduler的监控功能
    • 配置适当的告警策略
    • 定期检查任务执行历史
  4. 版本管理

    • 保持Dinky和DolphinScheduler版本兼容
    • 升级前做好充分测试

常见问题排查

  1. 推送失败

    • 检查DolphinScheduler服务是否正常运行
    • 验证Token是否有效且未过期
    • 确认项目名称是否正确
  2. 任务执行失败

    • 检查Dinky任务配置是否正确
    • 查看Flink集群资源是否充足
    • 分析任务日志定位具体问题
  3. 依赖关系不生效

    • 确认前置任务已正确配置
    • 检查工作流定义中的依赖连线
    • 验证前置任务执行状态

总结

通过Dinky与DolphinScheduler的集成,企业可以构建一个完整的Flink任务开发和调度解决方案。这种集成方案具有以下优势:

  1. 简化流程:从开发到调度的全流程可视化操作
  2. 提高效率:减少人工干预,降低运维成本
  3. 增强可靠性:完善的依赖管理和失败处理机制
  4. 灵活扩展:支持复杂的工作流编排

建议用户在实际生产环境中,根据业务需求和数据规模,合理规划任务调度策略和资源配置,以充分发挥该集成方案的价值。

dinky Dinky is an out-of-the-box, one-stop, real-time computing platform dedicated to the construction and practice of Unified Streaming & Batch and Unified Data Lake & Data Warehouse. Based on Apache Flink, Dinky provides the ability to connect many big data frameworks including OLAP and Data Lake. dinky 项目地址: https://gitcode.com/gh_mirrors/di/dinky

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏鹭千Peacemaker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值