Dinky 集成 DolphinScheduler
本文档介绍 DolphinScheduler 集成, 以及如何使用 DolphinScheduler 进行任务调度
注意: 本文档基于 Dinky 1.0.0+ 版本编写, 请确保 Dinky 版本 >= 1.0.0
前置要求
- DolphinScheduler 3.2.1+
- Dinky 1.0.0+
- Docker 19.03+
DolphinScheduler 环境准备
启动 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
创建租户并使用户加入该租户
- 进入 安全中心->租户管理->创建租户
- 进入 安全中心->用户管理->创建用户/修改用户 ->选择租户-> 保存
创建 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
进入 配置中心 -> 全局配置 -> 选择 DolphinScheduler 配置 tag
- 配置 DolphinScheduler 地址为: http://ip:12345/dolphinscheduler , 注意 ip 为 DolphinScheduler 服务所在机器的 ip, 根据实际情况修改
- 配置 DolphinScheduler Token为: 上一步创建的 Token
- 配置 DolphinScheduler 项目名为:Dinky(注意: 此为默认值, 可自行修改)
- 最后修改 是否启用 DolphinScheduler为是(注意: 默认为不启用)
Dinky 使用示例
Dinky 侧步骤
- 进入 数据开发->项目-> 右键目录 ->创建任务
- 任务类型可选择 FlinkSQL或FlinkJar,填写名称,并点击确定
- 打开该任务,编辑器内输入以下 DEMO SQL
# checkpoint 配置 自行根据实际情况修改, 以下为示例
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;
- 配置右侧 任务配置,请根据实际情况填写,如对参数不了解, 请鼠标悬浮至表单的每项 label 右侧的?查看帮助信息

- 在 Dinky 1.0.0 及以后,必须要发布任务才能 推送至 DolphinScheduler, 点击 发布按钮, 等待任务发布成功后,页面会自动刷新,从而出现推送按钮。
- 点击 推送按钮, 配置推送参数, 在 Dinky 1.0.0 及以后, 支持了配置前置依赖, 请根据实际情况填写
选择前置任务后,任务将会在前置任务执行成功后才会执行,请自行合理选择,避免任务循环依赖,本平台不做依赖检查

- 配置完成之后, 点击 完成按钮, 等待推送成功
DolphinScheduler 侧步骤
- 
进入 项目管理-> 点击Dinky项目(此为在配置中心中配置的项目名) ->工作流定义,点击工作流列表中备注为系统添加的工作流
- 
即可看到刚才在 Dinky 侧创建的任务 datagen已经被推送至 DolphinScheduler,且可以看到其依赖关系已经被正确设置 如图: (忽略其他任务,只关注datagen任务即可) 
- 
返回到 工作流定义页面, 将该工作流上线, 可点击运行按钮, 运行该工作流, 也可配置定时调度配置, 定时调度配置请参考 DolphinScheduler 官方文档
- 
剩余操作请参考 DolphinScheduler 官方文档, 本文档不再赘述 
总结
通过以上步骤, 我们可以看到, Dinky 与 DolphinScheduler 集成的效果,全面基于页面化配置,页面化操作, 无需编写任何代码,即可完成任务的调度, 降低了用户的学习成本,提高了用户的开发效率, 也降低了用户的维护成本, 使得用户可以更加专注于业务开发, 而不是繁琐的调度维护工作.