Dinky与DolphinScheduler集成实践指南
前言
在现代大数据处理场景中,任务调度系统是不可或缺的基础设施。本文将详细介绍如何将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
登录。
基础配置
- 创建租户:在"安全中心"→"租户管理"中创建新租户
- 用户管理:确保操作Dinky的用户已加入对应租户
- 生成Token:在"令牌管理"中创建API访问令牌,注意设置合理的过期时间
Dinky配置
服务启动
假设Dinky安装在/opt/dinky-1.0.0
目录:
cd /opt/dinky-1.0.0
./auto.sh start 1.16
访问http://<服务器IP>:8888
,使用默认账号admin/admin
登录。
调度系统集成配置
- 进入"配置中心"→"全局配置"
- 选择"DolphinScheduler配置"标签页
- 填写以下关键配置项:
- 服务地址:
http://<DS服务器IP>:12345/dolphinscheduler
- API Token:先前生成的Token
- 项目名称:默认为
Dinky
,可按需修改 - 启用开关:设置为"是"
- 服务地址:
任务开发与调度实践
FlinkSQL任务示例
以下是一个完整的FlinkSQL任务示例,包含数据生成和窗口计算:
-- 检查点配置
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;
任务发布流程
- 任务创建:在Dinky数据开发界面创建FlinkSQL或FlinkJar任务
- 参数配置:设置执行模式、集群配置等关键参数
- 任务发布:必须发布任务才能推送到DolphinScheduler
- 依赖设置:合理配置任务间的依赖关系,避免循环依赖
调度管理
DolphinScheduler操作
- 在"Dinky"项目下的"工作流定义"中查看推送的任务
- 确认任务依赖关系是否正确建立
- 上线工作流并执行测试运行
- 配置定时调度策略(可选)
最佳实践建议
- 资源规划:根据任务复杂度合理设置DolphinScheduler的worker分组
- 参数调优:对于长时间运行的任务,适当增大checkpoint间隔
- 监控配置:建议配置任务失败告警机制
- 版本管理:保持Dinky和DolphinScheduler版本兼容性
常见问题排查
- 推送失败:检查Token是否过期,网络连通性是否正常
- 任务不执行:确认前置依赖任务是否已完成
- 资源不足:调整DolphinScheduler的worker资源配置
- 版本不兼容:确保使用支持的版本组合
结语
通过Dinky与DolphinScheduler的深度集成,开发者可以构建从开发到调度的完整Flink任务管理流水线。这种集成方案不仅提高了开发效率,还增强了任务管理的可靠性和可维护性,是大数据平台建设的重要实践模式。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考