DolphinScheduler任务调度工具

任务调度:系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程

分布式调度:

  1. 分布性:每个部分可以独立部署,服务之间通过网络通信
  2. 伸缩性:每个部分可以集群部署,动态伸缩扩容
  3. 高可用

jdk也提供了相关的任务调度功能,如Timer,ScheduledExecutor。

介绍:分布式、易扩展的工作流调度平台

环境准备安装:

  1. mysql(5.7+)
  2. jdk(1.8+)
  3. zookeeper
  4. hadoop:需要资源上传功能选装

组件:

  1. masterServer:分布式无中心设计理念,负责工作流任务切分、任务提交(提交给workerServer并分配任务给workerServer)、任务监控,并同时监听其他的masterServer和workServer的健康状态,目的:为了做高可用、容错机制。
  2. workerServer:分布式务中心设计理念,负责任务的执行和提供日志服务
  3. zookeeper:masterServer和workerServer节点都通过zookeeper进行集群管理和容错,负责协调整个集群
  4. alert:提供告警相关服务(电话、邮件等)
  5. api接口:负责处理前端UI的请求,比如前端查看任务执行、执行的进度等
  6. UI:前端

流程:

  1. 定义工作流:用户访问UI定义工作流
  2. 保存工作流到数据库:通过调用api接口将工作流元数据保存到数据库中
  3. 工作流切分:保存到数据库后,masterServer要对工作流进行切分,多个masterServer之间的地位是平等的,都可以去切分工作流,竞争资源,加锁
  4. 分发任务(工作单元):工作流被切分为任务后,masterServer将工作单元分发给workerServer,收到任务后返回给masterServer确认信息ack和response
  5. 执行任务:Shell、SQL、Spark、MR等
  6. 执行进度的返回:一边执行任务,一边返回执行进度给masterServer,masterServer会把相应任务的执行状态写入到数据库

部署模式:

  1. 单机模式
  2. 伪集群模式:再单台 机器上部署dolphinScheduler各项服务,该模式下master、worker、api、server、logger server等服务都只在一台机器上
  3. 集群模式:配置多个master和worker

集群部署

初始化数据库

dolphinScheduler元数据存储再关系型数据库中,需要创建相应的数据库和用户

1.创建数据库

CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

2.创建用户

CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler';

3.赋予用户相应权限

GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%';

flush privileges;

4.修改数据源配置文件

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://hadoop102:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=dolphinscheduler
spring.datasource.password=dolphinscheduler
# hadoop102:主机名

5.拷贝mysql的JDBC驱动到dolphinScheduler的解压目录下的lib中

6.执行数据库初始化脚本(位于dolphinScheduler解压目录下的script目录下)

7.修改运行参数,conf/env/dolphinscheduler)env.sh中的环境变量(百度配置)

8.jdk软链到/usr/bin/java下

9.一键部署配置文件 conf/config/install_config.conf中的各项参数(百度配置)

界面

1.安全中心配置

功能:租户管理、用户管理、告警组管理、worker分组管理、队列管理、令牌管理等功能

用户管理:用来登录dolphinScheduler,配置:用户名,关联的租户、队列、邮件

告警组管理:用于指定告警发送对象

worker分组管理:任务执行时将任务分配给指定的worker组,由改组worker节点执行该任务,默认情况下所有worker都在default组

令牌配置:用于通过接口访问dolphinScheduler各项服务时的用户验证,与第三方服务进行集成,需调其接口才需使用令牌

2.项目管理

工作流基础配置三个模块:

  1. 工作流定义:用于定义工作流,包括工作流各个节点任务详情和节点依赖关系
    • 创建工作流
    • 配置任务节点(shell、python、http等)
      • 运行标志:是否执行该节点
      • 失败重试次数:当执行失败时重试
      • 脚本:执行的脚本内容
    • 配置依赖关系
    • 保存工作流定义:设置流程名和选择执行的租户
    • 设置定时,完成上线
  2. 工作流实例:每执行一次工作流就会生成一个工作流实例
    • 查看工作流执行状态(绿色为成功)
  3. 任务实例:工作流中的每个节点,每执行一次就会生成一个任务实例
    • 查看日志

进阶

工作流传参

1.局部传参
  • 针对单个任务节点有效的参数,任务系欸但通过${参数名}引用参数值
2.全局参数
  • 对整个工作流的所有任务节点都有效的参数,再保存工作流时设置全局参数
3.自定义时间参数
参数 说明
${add_months(yyyyMMdd,12*N)} 后N年
${add_months(yyyyMMdd,-12*N)} 前N年
${add_months(yyyyMMdd,N)} 后N月
${yyyyMMdd+7*N} 后N周
${yyyyMMdd+N} 后N天
${yyyyMMdd-N} 前N天
${HHmmss-N/24} 前N小时
${HHmmss+N/24/60} 后N分组

如:执行的脚本需要一个yyyy-MM-dd的前一天日期的参数:${yyyy-MM-dd-1}

4.引用资源

在Shell脚本节点或python中引用在资源中心写好的脚本资源

5.告警通知

准备邮箱账号开启SMTP服务,获取授权码

你可能感兴趣的:(任务调度工具,hadoop,分布式,java)