Apache DolphinScheduler新一代分布式工作流任务调度平台实战-中


目录
  • mysql maven 仓库 中下载对应版本的 JDBC 驱动,将其移入 api-server/libs 以及 worker-server/libs 文件夹中,最后重启 api-serverworker-server 服务,即可使用 MySQL 数据源。如果你使用容器启动 DolphinScheduler,同样也是将 JDBC 驱动挂载放到以上两个服务的对应路径下后,重启驱动即可。

    创建MySQL数据源

    由于前面部署DolphinScheduler集群已将MySQL的驱动复制到所有节点master和worker、api-server、alert-server上了,因此这里可以开始创建MySQL数据源

    • 数据源:选择 MYSQL
    • 数据源名称:输入数据源的名称
    • 描述:输入数据源的描述
    • IP 主机名:输入连接 MySQL 的 IP
    • 端口:输入连接 MySQL 的端口
    • 用户名:设置连接 MySQL 的用户名
    • 密码:设置连接 MySQL 的密码
    • 数据库名:输入连接 MySQL 的数据库名称
    • Jdbc 连接参数:用于 MySQL 连接的参数设置,以 JSON 形式填写

    image-20220802112921160

    jdbc连接参数如下:

    {
        "useSSL": "false",
        "useUnicode": "true",
        "characterEncoding": "utf-8",
        "allowMultiQueries": "true",
        "zeroDateTimeBehavior": "convertToNull",
        "allowPublicKeyRetrieval": "true"
    }
    

    点击数据源记录的数据源参数

    image-20220802121308522

    创建ClickHouse数据源

    这里我们使用前面部署好的ClickHouse,CLICKHOUSE数据源驱动原生已支持

    image-20220802122100919

    工作流实践

    SQL工作流

    拖拉SQL引擎图标,创建名称为sql_node1任务定义

    insert into table01 
    values('1001',99.9,'2022-08-02 22:00:00');
    
    CREATE TABLE table01
    (
        `id` String,
        `price` Float64,
        `create_time` DateTime
    )
    ENGINE = MergeTree()
    PARTITION BY toYYYYMM(create_time)
    ORDER BY id;
    

    image-20220802180852012

    创建名称为sql_node2任务定义

    insert into table02 
    values('1002',199.9,'2022-08-02 23:00:00');
    
    CREATE TABLE table02
    (
        `id` String,
        `price` Float64,
        `create_time` DateTime
    )
    ENGINE = MergeTree()
    PARTITION BY toYYYYMM(create_time)
    ORDER BY id;
    

    image-20220802183954330
    创建名称为sql_node3任务定义

    insert into table03 select * from table01 
    union all select * from table02;
    
    CREATE TABLE table03
    (
        `id` String,
        `price` Float64,
        `create_time` DateTime
    )
    ENGINE = MergeTree()
    PARTITION BY toYYYYMM(create_time)
    ORDER BY id;
    

    image-20220802182923983

    编辑好工作流的依赖关系,sql_node1和sql_node2都完成后再执行sql_node3,保存名称为sql演示工作流。

    image-20220802182103074

    上线sql演示工作流并点击执行,查询工作流实例执行结果

    image-20220802183746437

    查询任务实例执行结果

    image-20220802183645989

    使用ClickHouse的客户端登录ClickHouse查询数据,已经显示正确的结果

    image-20220802184058126

    工作流定时

    大部分任务都会有定时运行的需求,这就需要定时工作流,创建步骤:点击项目管理->工作流->工作流定义,进入工作流定义页面,上线工作流,点击"定时"按钮,弹出定时参数设置弹框:

    • 选择起止时间。在起止时间范围内,定时运行工作流;不在起止时间范围内,不再产生定时工作流实例。

    • 添加一个每隔 5 分钟执行一次的定时。

    • 失败策略、通知策略、流程优先级、Worker 分组、通知组、收件人、抄送人同工作流运行参数。

      点击"创建"按钮,创建定时成功,此时定时状态为"下线",定时需上线才生效。

      定时上线:点击"定时管理"按钮,进入定时管理页面,点击"上线"按钮,定时状态变为"上线",如下图所示,工作流定时生效。

    image-20220803163829335

    告警

    告警模块支持场景

    用户需要创建告警实例,在创建告警实例时,需要选择告警策略,有三个选项,成功发、失败发,以及成功和失败都发。在执行完工作流或任务时,如果触发告警,调用告警实例发送方法会进行逻辑判断,将告警实例与任务状态进行匹配,匹配则执行该告警实例发送逻辑,不匹配则过滤。创建完告警实例后,需要同告警组进行关联,一个告警组可以使用多个告警实例。 告警模块支持场景如下:

    image-20220803155642085

    邮件告警示例

    先准备一个邮箱,开启POP3/SMTP服务,由于是要用来发送主要是SMTP,得到授权码,保存修改。

    image-20220803161649495

    使用管理员用户登录,进入到安全中心,选择告警实例管理,创建一个告警实例,然后选择对应的告警插件EMAIL,填写相关如下参数。

    image-20220803162258355

    然后选择告警组管理,创建告警组,选择相应的告警实例即可。

    image-20220803162421446

    工作流定义运行中配置通知策略为成功或失败都发,告警组为前面创建测试告警组

    image-20220803163335087

    查看邮箱确认已收到邮件信息

    image-20220803163503224

    **本人博客网站 **IT小神 www.itxiaoshen.com