dolphin_scheduler_case调度

调度案例

前置准备


创建yarn队列

⏰ 安全中心 > Yarn队列管理 > 创建队列 > 输入名称和队列值

  • 队列名称: EBS_YARN_QUEUE
  • 队列值: EBS_YARN_QUEUE

创建租户

多用户共享资源,即多租户

1
2
3
4
5
6
7
8
9
10
# 添加系统用户
useradd dolphinscheduler
# 所有权移交
chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-2.0.8/
# 设置用户密码
passwd dolphinscheduler
# 切换至新用户
su dolphinscheduler
# 免密登录
ssh-copy-id dolphinscheduler@single

如:hdfs, yarn, spark-on-yarn …

当 Worker 提交任务时,就用指定的租户身份提交

需要事先在对应的 Worker 节点上创建用户,或者通过修改 worker.properties 配置自动创建不存在用户, 但是需要启动 Worker 节点的用户具备免密功能

1
2
# 该项默认值为 false
worker.tenant.auto.create=true

⏰ 安全中心 > 租户管理 > 创建租户 > 输入租户名和选择关联 yarn 队列名

  • 租户名:dolphinscheduler
  • 关联队列:ebs

创建用户

用户登录 dolphin scheduler 系统的用户

分类:

  • 管理员:有授权和用户管理等权限,无创建项目和工作流定义权限。如:安全中心
  • 普通用户:有创建项目和工作流定义的创建,编辑,执行等操作权限。

创建普通用户

  • ⏰ 安全中心 > 用户管理 > 创建用户 > 输入账号、密码、租户、Yarn队列、邮箱、手机
    • 👉 指定租户和队列:用户提交任务默认使用的租户与队列
    • 用户名:henry
    • 用户密码:henry123
    • 默认租户:dolphinscheduler
    • 默认队列:ebs
    • 邮箱:12665473@qq.com
    • 手机好吗:18014499655

创建邮箱告警实例

告警QQ邮箱设置

  • 登录QQ邮箱

  • 点击QQ邮箱头像 > 账号和安全 > 安全设置 > SMTP/IMAP 服务

    • 开启服务
    • 获取授权码:
      • 微信扫码,自动发送
      • 生成授权码 ihybzznbvnopbijb

⏰ 安全中心 > 告警实例管理 > 创建告警实例 > 输入告警实例名称并选择插件

插件可选:Ding Talk, Email, We chat 等

  • 告警实例名称:ebs_alert_mail
  • 插件名称:Email
  • 收件人:12665473@qq.com
  • 发件主机:smtp.qq.com
  • 发件端口:
    • 未加密:25
    • 已加密(tls):587
    • 已加密(ssl):465
  • 发件人:12665473@qq.com
  • 发件授权:Yes
    • 账号:12665473
    • 授权码:ihybzznbvnopbijb
  • 开启超时(ttl):Yes
  • 开启安全(ssl):Yes

创建告警组

告警实例与告警组用于任务运行成功或者失败之后的告警通知。
一个告警组可包含多个告警实例,一个告警实例,需选择一个告警插件,并配置相应参数。
目前支持的告警插件有电子邮件、钉钉、企业微信、飞书等。

⏰ 安全中心 > 告警组管理 > 创建告警组 > 输入告警组名称并选择告警实例名

  • 告警组名:ebs_warn_group
  • 告警实例:ebs_alert_mail

创建工作组

一个 Worker 分组由多个 Worker 组成。
在任务执行时,可以将任务分配给指定 Worker组,由该组中的 Worker 节点执行该任务。
每个 Worker 至少属于一个组,默认为 default 组。

Worker 所属分组可以调整,配置方式如下:

  • 静态配置:worker. properties

    1
    2
    # 节点对应的分组名称列表,多个分组名之间用英文逗号隔开
    worker.groups=default,EBS
  • 动态配置:

    • ⏰ 安全中心 > Worker分区管理 > 创建Worker分组 > 输入组名和组地址列表
      • 名称: EBS_WORKER_GROUP
      • Worker地址列表:192.168.83.128:1234

创建环境

配置 Worker 运行环境(任务运行时所需的环境变量)。

  • 默认的运行环境由 Worker节点中 conf/env/dolphinscheduler_env.sh 决定。

    1
    2
    3
    4
    5
    6
    7
    8
    export JAVA_HOME=/opt/software/jdk1.8.0_171
    export HADOOP_HOME=/opt/software/hadoop-3.1.3
    export HADOOP_CONF_DIR=/opt/software/hadoop-3.1.3/etc/hadoop
    export YARN_CONF_DIR=/opt/software/hadoop-3.1.3/etc/hadoop
    export HIVE_HOME=/opt/software/hive-3.1.2
    export SPARK_HOME=/opt/software/spark-3.1.2
    export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$SPARK_HOME/bin:$PATH
    export HADOOP_CLASSPATH=/opt/software/hadoop-3.1.3/etc/hadoop:/opt/software/hadoop-3.1.3/share/hadoop/common/lib/*:/opt/software/hadoop-3.1.3/share/hadoop/common/*:/opt/software/hadoop-3.1.3/share/hadoop/hdfs:/opt/software/hadoop-3.1.3/share/hadoop/hdfs/lib/*:/opt/software/hadoop-3.1.3/share/hadoop/hdfs/*:/opt/software/hadoop-3.1.3/share/hadoop/mapreduce/lib/*:/opt/software/hadoop-3.1.3/share/hadoop/mapreduce/*:/opt/software/hadoop-3.1.3/share/hadoop/yarn:/opt/software/hadoop-3.1.3/share/hadoop/yarn/lib/*:/opt/software/hadoop-3.1.3/share/hadoop/yarn/*
  • 创建特定环境

  • ⏰ 安全中心 > 环境管理 > 创建环境 > 输入环境名称👇、环境配置、详细描述并选择Worker组

    • 名称:ebs_env
    • 环境配置:
    1
    2
    3
    4
    5
    6
    7
    8
     export JAVA_HOME=/opt/software/jdk1.8.0_171
    export HADOOP_HOME=/opt/software/hadoop-3.1.3
    export HADOOP_CONF_DIR=/opt/software/hadoop-3.1.3/etc/hadoop
    export YARN_CONF_DIR=/opt/software/hadoop-3.1.3/etc/hadoop
    export HIVE_HOME=/opt/software/hive312
    export SPARK_HOME=/opt/software/spark-3.1.2
    export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$SPARK_HOME/bin:$PATH
    export HADOOP_CLASSPATH=/opt/software/hadoop-3.1.3/etc/hadoop:/opt/software/hadoop-3.1.3/share/hadoop/common/lib/*:/opt/software/hadoop-3.1.3/share/hadoop/common/*:/opt/software/hadoop-3.1.3/share/hadoop/hdfs:/opt/software/hadoop-3.1.3/share/hadoop/hdfs/lib/*:/opt/software/hadoop-3.1.3/share/hadoop/hdfs/*:/opt/software/hadoop-3.1.3/share/hadoop/mapreduce/lib/*:/opt/software/hadoop-3.1.3/share/hadoop/mapreduce/*:/opt/software/hadoop-3.1.3/share/hadoop/yarn:/opt/software/hadoop-3.1.3/share/hadoop/yarn/lib/*:/opt/software/hadoop-3.1.3/share/hadoop/yarn/*
    1
    2
    3
    4
    5
    6
    7
    8
    9
    export JAVA_HOME=/opt/software/jdk1.8.0_171
    export HADOOP_HOME=/opt/software/hadoop-3.1.3
    export HADOOP_CONF_DIR=/opt/software/hadoop-3.1.3/etc/hadoop
    export YARN_CONF_DIR=/opt/software/hadoop-3.1.3/etc/hadoop
    export HIVE_HOME=/opt/software/hive312
    export SPARK_HOME2=/opt/software/spark-3.1.2
    export HADOOP_CLASSPAHT=/opt/software/hadoop-3.1.3/etc/hadoop:/opt/software/hadoop-3.1.3/share/hadoop/common/lib/*:/opt/software/hadoop-3.1.3/share/hadoop/common/*:/opt/software/hadoop-3.1.3/share/hadoop/hdfs:/opt/software/hadoop-3.1.3/share/hadoop/hdfs/lib/*:/opt/software/hadoop-3.1.3/share/hadoop/hdfs/*:/opt/software/hadoop-3.1.3/share/hadoop/mapreduce/lib/*:/opt/software/hadoop-3.1.3/share/hadoop/mapreduce/*:/opt/software/hadoop-3.1.3/share/hadoop/yarn:/opt/software/hadoop-3.1.3/share/hadoop/yarn/lib/*:/opt/software/hadoop-3.1.3/share/hadoop/yarn/*

    export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$SPARK_HOME/bin:$PATH
    • Worker 组:EBS

创建令牌

令牌用于通过接口访问 DolphinScheduler 各项服务时的用户验证。
普通用户通过 UI 页面访问各项服务时,无需使用令牌。
若需将 DolphinScheduler 与第三方服务进行集成,则需调用其接口。

⏰ 安全中心 > 令牌管理 > 创建令牌 > 选择失效时间、关联用户、并生成令牌

  • 失效时间:2024-7-31 23:59:59
  • 关联用户:henry
  • 生成令牌:bd2694540517ad916b0b203d28292b76

创建工作流


切换普通用户登录
项目管理 > 工作流 > 创建工作流 > 输入项目名称

  • 项目名称:EBS

编辑工作流

点击项目名称进入项目管理界面

共包含三个模快,分别为工作流定义、工作流实例和任务实例。

  • 工作流定义:用于定义工作流,包括工作流各节点任务详情及各节点依赖关系等。

  • 工作流实例:工作流每执行一次就会生成一个工作流实例。

    • 点击实例:可查看正在运行的工作流以及已经完成的工作流。
  • 任务实例:工作流中的一个节点任务,每执行一次就会生成一个任务实例。

    • 点击任务:可查看正在执行的节点任务以及已经完成的节点任务。

简单案例

节点公共配置项介绍
  • 优先级:表示 Worker节点资源不足时优先执行哪个 Task节点。
  • Worker分组和环境:若管理员编辑了Worker分组与环境,并将N个环境与Worker工作组关联,则选择对应的Worker分组,会自动更新可选的环境,做出相应的环境选择即可。
  • 失败重试:若任务执行失败,可以在一定的时间间隔内重复执行
  • 超时告警:若任务执行超时,则在最长 30 分钟(可修改)后,做出告警
  • 资源:若当前任务执行需要相关的依赖资源,则选择,当然需要提前配置依赖资源,默认为空
    • 资源主要为:java 或 scala 的各种 jar 包
    • 将 jar 包提前上传至资源中心,就会出现在资源列表中
    • 在资源列表中做出相应的选择即可
  • 前置任务:若任务之间有依赖关系,则必选择其依赖的任务节点名称
编辑三个 SHELL 实例
  • A :

    1
    echo "hello world" > /root/scheduler/a.log
  • B :

    1
    echo "we are the champion" > /root/scheduler/b.log
  • C :

    1
    2
    3
    cat /root/scheduler/a.log > /root/scheduler/c.log
    cat /root/scheduler/b.log >> /root/scheduler/c.log
    wc /root/scheduler/c.log > /root/scheduler/d.log
  • 流程图 DAG

    dolphin_workflow
  • 工作流保存为:ssh-test

  • 初始化默认为 ”下线“ 状态,不可执行,需要在工作流列表中点击工作流之后的 “↑” 按钮上线。

  • 点击工作流列表中 “▶” 按钮立即执行工作流,执行之后会产生实例和任务实例。

    配置项功能介绍:

    • 失败策略:DAG 图中某个任务执行失败,其他并行任务是否有执行的必要,二选一
    • 告警组和通知策略互相关联:是否通知,由谁通知且通知谁
    • 补数:是否补之前失败的任务,比如:T+1,今天发现前三天的任务执行失败了,选择补数,可以补上之前执行失败的任务。选择待补日期区间,有两种补的方式如下:
      • 串行:如果数据之间存在依赖关系,按天执行。
      • 并行:每两天之间的数据或结果之间无依赖关系,一起并行执行。

    dolphin_workflow_start

    • 点击工作流实例名:Task ✔ 表示执行成功,Task ✖ 表示执行失败

    dolphin_workflow_instance

    • 点击任务实例之后操作项中的 人📄:查看任务日志
    dolphin_workflow_task_instance
  • 点击工作流列表中 “时⏱” 按钮设置工作流定期执行

    • 点击 “执行时间” :可以查看详细执行时间列表。
    • 定时任务默认为下线状态:点击工作流详情之后的定时管理图标 📅 , 点击 “↑” 设置上线。

    dolphin_workflow_timer

工作流传参

1、定义:给脚本传参

2、方式:三种传参方式

  • 本地参数:单个任务节点有效的参数,设置单个任务是通过 “自定义参数” 添加。

    • 参数类型:

      • in : 表示给当前节点的脚本传参 :名称, in, 类型, 值

        • 静态常量值没有实际意义。

        • 按内置参数传入:主要为日期

          基础参数

          1
          2
          3
          4
          # name				parameter(参数)		  remark
          system.biz.date ${system.biz.date} #定时前一天 yyyyMMdd
          system.biz.curdate ${system.biz.curdate} #定时当天 yyyyMMdd
          system.datetime ${system.datetime} #定时当天 yyyyMMddHHmmss

          衍生参数

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          # parameter(参数) 使用格式
          $[yyyy-MM-dd HH:mm:ss]
          $[yyyy-MM-dd]
          # parameter(参数) 使用函数
          $[add_months(yyyy-MM-dd,12*N)] # 后N年
          $[add_months(yyyy-MM-dd,-12*N)] # 前N年
          $[add_months(yyyy-MM-dd,N)] # 后N月
          $[add_months(yyyy-MM-dd,-N)] # 前N月
          # parameter(参数) 直接±数值
          $[yyyy-MM-dd+7*N] # 后N周
          $[yyyy-MM-dd-7*N] # 前N周
          $[yyyy-MM-dd+N] # 后N天
          $[yyyy-MM-dd-N] # 前N天
          $[HH:mm:ss+N/24] # 后N小时
          $[HH:mm:ss-N/24] # 前N小时
          $[HH:mm:ss+N/24/60] # 后N分钟
          $[HH:mm:ss-N/24/60] # 前N分钟
      • out : 表示给当前节点的下游节点传参:名称, out, 类型, 值

        • 并非所有任务支持,只有:Shell, SQL, Procedure 支持

        • 传递当前任务的动态执行结果:

          1
          2
          3
          4
          5
          # 动态传参语法:写在脚本中,配合分支给下游传同键不同值
          echo '${setValue(key=value)}'

          # 参数设置:名称, out, 类型, 空置
          # 下游节点中:通过 ${key} 取值
  • 全局参数:

    • 工作流编辑完成时,通过 “设置全局” 添加。

3、应用

  • 取值:脚本中通过 ${参数名} 提取参数值。
  • 冲突一(优先级):当全局、局部、上游参数同名时,优先级为:本地 > 上游 > 全局。
  • 冲突二:若多个上游同时给下游传同名参数,首先取非空值,多个非空值按时间取最先传入的值。

引用依赖资源

任务需要引用的外部资源

  • MR、Spark 等任务须引用 jar 包
  • Shell 任务需要引用其他脚本

“资源中心” 统一管理以上资源,资源存储方式如下。

  • 本地文件系统
  • hdfs
  • Hive 自定义函数管理

工作流失败重启

工作流启动方式:

  • 在工作流列表中:选择 ▶ 启动工作流
  • 在工作流列表中:选择 ⏱ 定时自动工作流执行计划
  • 若任务执行失败 ✖:可以选择在 “工作流实例” 中选择从失败节点开始执行

单机启动快速体验

启动服务

bin/dolphinscheduler-daemon.sh start standalone-server

修改工程配置:

yarn + client

工程打包:

package -> jar

创建资源并上传 jar:

henry_ebs/*.jar

主机与部署模式:

yarn + client


dolphin_scheduler_case调度
https://leaf-domain.gitee.io/2025/03/22/linux_env_install/2_dolphin_scheduler_case/
作者
叶域
发布于
2025年3月22日
许可协议