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服务,获取授权码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache DolphinScheduler(incubator,原EasyScheduler)是一个大数据分布式工作流任务调度系统,主要解决大数据研发过程中ETL处理错综复杂的依赖关系,而不能直观监控任务健康状态等问题。DolphinScheduler以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作。 设计特点:一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。 其主要目标如下: 1、以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态 2、支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql),Python,Sub_Process、Procedure等 3、支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作 4、支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败 5、支持工作流全局参数及节点自定义参数设置 6、支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑 7、支持任务日志在线查看及滚动、在线下载日志等 8、实现集群HA,通过Zookeeper实现Master集群和Worker集群去中心化 9、支持对Master/Worker cpu load,memory,cpu在线查看 10、支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计 11、支持补数 12、支持多租户 13、支持国际化 14、还有更多等待伙伴们探索

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值