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作为一款强大的FlinkSQL开发平台,结合DolphinScheduler的调度能力,能够为企业级数据开发提供完整的解决方案。

环境准备

系统要求

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

为什么选择这些版本?

Dinky 1.0.0版本对DolphinScheduler集成进行了重大优化,提供了更稳定的API对接和更友好的用户界面。而DolphinScheduler 3.2.1版本则提供了完善的API支持和任务调度能力。

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. 创建租户:进入"安全中心"→"租户管理",创建新租户
  2. 用户管理:在"用户管理"中创建或修改用户,确保用户属于正确的租户

租户概念在DolphinScheduler中用于资源隔离,合理规划租户有助于后续的资源管理和权限控制。

创建API访问令牌

在"安全中心"→"令牌管理"中创建访问令牌,这是Dinky与DolphinScheduler通信的凭证。请注意:

  • 设置合理的过期时间
  • 妥善保存生成的Token,后续在Dinky配置中需要使用

Dinky环境配置

启动Dinky服务

假设Dinky安装在/opt/dinky-1.0.0目录下,执行以下命令启动:

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

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

配置DolphinScheduler集成

在Dinky的"配置中心"→"全局配置"中,找到"DolphinScheduler配置"标签页,进行以下配置:

  1. 服务地址:填写DolphinScheduler的API地址,格式为http://ip:12345/dolphinscheduler
  2. 访问令牌:填写之前生成的Token
  3. 项目名称:默认为"Dinky",可根据实际需求修改
  4. 启用开关:将"是否启用DolphinScheduler"设置为"是"

项目名称对应DolphinScheduler中的项目概念,所有推送的任务都会归类到该项目下。

实践案例:FlinkSQL任务调度

在Dinky中创建任务

  1. 进入"数据开发"→"项目",右键目录选择"创建任务"
  2. 选择任务类型(FlinkSQL或FlinkJar),填写任务名称
  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;

-- 创建源表
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'
);

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

-- 业务逻辑SQL
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. 在右侧"任务配置"面板中填写相关参数,包括执行模式、集群配置等

任务发布与推送

  1. 发布任务:在Dinky 1.0.0+版本中,必须先发布任务才能推送到DolphinScheduler
  2. 推送任务:发布成功后,点击"推送"按钮,配置以下参数:
    • 工作流名称
    • 任务优先级
    • 失败策略
    • 前置依赖任务(可选)

前置依赖功能允许您建立任务间的依赖关系,但需注意避免循环依赖,系统不会自动检查此类问题。

DolphinScheduler侧操作

  1. 在DolphinScheduler的"Dinky"项目中查看"工作流定义"
  2. 找到系统自动创建的工作流,可以看到从Dinky推送过来的任务及其依赖关系
  3. 将工作流上线并执行,或配置定时调度策略

最佳实践建议

  1. 命名规范:为任务和工作流制定统一的命名规范,便于后期管理
  2. 参数配置:合理设置任务优先级和失败策略,根据业务重要性区分
  3. 依赖管理:谨慎设置任务依赖关系,避免复杂的依赖链
  4. 版本控制:Dinky的任务发布机制提供了版本控制能力,合理利用这一特性
  5. 监控告警:结合DolphinScheduler的告警机制,设置任务失败通知

常见问题排查

  1. 推送失败:检查Token是否有效、服务地址是否正确、网络是否通畅
  2. 任务执行失败:查看DolphinScheduler的任务日志,定位具体错误原因
  3. 依赖不生效:确认前置任务是否成功执行,依赖关系配置是否正确
  4. 资源不足:检查DolphinScheduler worker节点的资源使用情况

总结

通过Dinky与DolphinScheduler的集成,我们实现了:

  1. 可视化开发:在Dinky中完成FlinkSQL的开发和测试
  2. 自动化调度:利用DolphinScheduler强大的调度能力管理任务执行
  3. 简化运维:统一的界面操作降低了运维复杂度
  4. 提高效率:从开发到调度的全流程页面化操作,显著提升工作效率

这种集成方案特别适合需要定期执行Flink任务的场景,如日报、周报等定时数据处理任务。通过合理的配置和管理,可以构建稳定可靠的大数据任务调度体系。

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
发出的红包

打赏作者

诸肖翔Loveable

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

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

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

打赏作者

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

抵扣说明:

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

余额充值