DolphinScheduler【部署 01】分布式可视化工作流任务调度工具DolphinScheduler部署使用实例分享(一篇入门学会使用DolphinScheduler)

简介: DolphinScheduler【部署 01】分布式可视化工作流任务调度工具DolphinScheduler部署使用实例分享(一篇入门学会使用DolphinScheduler)

1.简介

简介来自官方文档,进行简单整理:

一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。

旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中的关系。 解决数据研发ETL依赖错综复杂,无法监控任务健康状态的问题。 DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。

1.1 特性

  • 可视化 DAG: 用户友好的,通过拖拽定义工作流的,运行时控制工具
  • 模块化操作: 模块化有助于轻松定制和维护。
  • 支持多种任务类型: 支持Shell、MR、Spark、SQL等10余种任务类型,支持跨语言,易于扩展
  • 丰富的工作流操作: 工作流程可以定时、暂停、恢复和停止,便于维护和控制全局和本地参数。
  • 高可靠性: 去中心化设计,确保稳定性。 原生 HA 任务队列支持,提供过载容错能力。 能提供高度稳健的环境。
  • 高扩展性: 支持多租户和在线资源管理。支持每天10万个数据任务的稳定运行。

1.2 建议配置

作为一款开源分布式工作流任务调度系统,可以很好地部署和运行在 Intel 架构服务器及主流虚拟化环境下,并支持主流的Linux操作系统环境

1.2.1 Linux 操作系统版本要求
操作系统 版本
Red Hat Enterprise Linux 7.0 及以上
CentOS 7.0 及以上
Oracle Enterprise Linux 7.0 及以上
Ubuntu LTS 16.04 及以上

注意: 以上 Linux 操作系统可运行在物理服务器以及 VMware、KVM、XEN 主流虚拟化环境上

1.2.2 服务器建议配置

DolphinScheduler 支持运行在 Intel x86-64 架构的 64 位通用硬件服务器平台。对生产环境的服务器硬件配置有以下建议:

CPU 内存 硬盘类型 网络 实例数量
4核+ 8 GB+ SAS 千兆网卡 1+

注意: 以上建议配置为部署 DolphinScheduler 的最低配置,生产环境强烈推荐使用更高的配置;硬盘大小配置建议 50GB+ ,系统盘和数据盘分开。

1.2.3 网络要求

DolphinScheduler正常运行提供如下的网络端口配置:

组件 默认端口 说明
MasterServer 5678 非通信端口,只需本机端口不冲突即可
WorkerServer 1234 非通信端口,只需本机端口不冲突即可
ApiApplicationServer 12345 提供后端通信端口

注意: MasterServer 和 WorkerServer 不需要开启网络间通信,只需本机端口不冲突即可;管理员可根据实际环境中 DolphinScheduler 组件部署方案,在网络侧和主机侧开放相关端口。

1.2.4 客户端 Web 浏览器要求

DolphinScheduler 推荐 Chrome 以及使用 Chromium 内核的较新版本浏览器访问前端可视化操作界面。

1.3 名词解释

  • DAG:全称 Directed Acyclic Graph,简称 DAG。工作流中的 Task 任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。
  • 流程定义:通过拖拽任务节点并建立任务节点的关联所形成的可视化DAG
  • 流程实例:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成。每运行一次流程定义,产生一个流程实例
  • 任务实例:任务实例是流程定义中任务节点的实例化,标识着某个具体的任务
  • 任务类型:目前支持有 SHELL、SQL、SUB_PROCESS(子流程)、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依赖),同时计划支持动态插件扩展,注意:其中 SUB_PROCESS类型的任务需要关联另外一个流程定义,被关联的流程定义是可以单独启动执行的
  • 调度方式:系统支持基于 cron 表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、定时、重跑、暂停、停止、恢复等待线程。 其中 恢复被容错的工作流恢复等待线程 两种命令类型是由调度内部控制使用,外部无法调用
  • 定时调度:系统采用 quartz 分布式调度器,并同时支持cron表达式可视化的生成
  • 依赖:系统不单单支持 DAG 简单的前驱和后继节点之间的依赖,同时还提供任务依赖节点,支持流程间的自定义任务依赖
  • 优先级:支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出
  • 邮件告警:支持 SQL任务 查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知
  • 失败策略:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,继续是指不管并行运行任务的状态,直到流程失败结束。结束是指一旦发现失败任务,则同时Kill掉正在运行的并行任务,流程失败结束
  • 补数:补历史数据,支持区间并行串行两种补数方式,其日期选择方式包括日期范围日期枚举两种

1.4 模块介绍

  • dolphinscheduler-master master模块,提供工作流管理和编排服务。
  • dolphinscheduler-worker worker模块,提供任务执行管理服务。
  • dolphinscheduler-alert 告警模块,提供 AlertServer 服务。
  • dolphinscheduler-api web应用模块,提供 ApiServer 服务。
  • dolphinscheduler-common 通用的常量枚举、工具类、数据结构或者基类。
  • dolphinscheduler-dao 提供数据库访问等操作。
  • dolphinscheduler-remote 基于 netty 的客户端、服务端。
  • dolphinscheduler-service service模块,包含Quartz、Zookeeper、日志客户端访问服务,便于server模块和api模块调用。
  • dolphinscheduler-ui 前端模块。

2.部署(单机版)

安装版本为3.1.5,以下内容均以此版本进行说明。

2.1前置准备工作

  • JDK:下载JDK (1.8+),安装并配置 JAVA_HOME 环境变量,并将其下的 bin 目录追加到 PATH 环境变量中。如果你的环境中已存在,可以跳过这步。
  • 二进制包:在下载页面下载 DolphinScheduler 二进制包

安装环境如下:

[root@tcloud ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[root@tcloud ~]# java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)

官网 https://dolphinscheduler.apache.org/zh-cn/docs/3.1.5/guide/installation/standalone 部署文档:

2.2 下载

清华大学开源软件镜像站下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/dolphinscheduler/3.1.5/

2.3 安装

2.3.1 解压并启动 DolphinScheduler

二进制压缩包中有 standalone 启动的脚本,解压后即可快速启动。本次以最新版本apache-dolphinscheduler-3.1.5-bin.tar.gz进行说明。

# 1.解压
tar -zxvf apache-dolphinscheduler-3.1.5-bin.tar.gz
# 2.启动
[root@tcloud apache-dolphinscheduler-3.1.5-bin]# cd apache-dolphinscheduler-3.1.5-bin
[root@tcloud apache-dolphinscheduler-3.1.5-bin]# bash ./bin/dolphinscheduler-daemon.sh start standalone-server
Begin start standalone-server......
starting standalone-server, logging to /opt/install/apache-dolphinscheduler-3.1.5-bin/standalone-server/logs
Overwrite standalone-server/conf/dolphinscheduler_env.sh using bin/env/dolphinscheduler_env.sh.
End start standalone-server.
# 启动 Standalone Server 服务
bash ./bin/dolphinscheduler-daemon.sh start standalone-server
# 停止 Standalone Server 服务
bash ./bin/dolphinscheduler-daemon.sh stop standalone-server
2.3.2 登录 DolphinScheduler

浏览器访问地址 http://localhost:12345/dolphinscheduler/ui 即可登录系统UI。默认的用户名和密码是 admin/dolphinscheduler123

登录后的首页:

2.3.3 配置数据库

Standalone server 使用 H2 数据库作为其元数据存储数据,这是为了上手简单,用户在启动服务器之前不需要启动数据库。但是如果用户想将元数据库存储在 MySQL 或 PostgreSQL 等其他数据库中,他们必须更改一些配置。请参考 数据源配置Standalone 切换元数据库 创建并初始化数据库

3.实例

3.1 以下操作为管理员用户

  • 创建队列
  • 创建租户
  • 创建普通用户
  • 创建告警组实例
  • 创建告警组
  • 创建 Worker 分组
  • 创建环境
  • 创建 Token 令牌

3.2 以下操作为普通用户执行

点击右上角用户名“退出”,重新使用普通用户登录。

  • 项目管理->创建项目->点击项目名称

  • 点击工作流定义->创建工作流定义->上线工作流定义





  • 任务->任务实例->查看日志

  • 工作流->工作流实例->点击工作流实例名称->右键可以查询日志

任务脚本内容:

# 1.进入/opt/install目录
cd /opt/install
# 2.执行保存文件ChangeTime的脚本
bash ./saveChangeTime.sh
# 保存文件ChangeTime的脚本内容
#!/bin/bash
stat /opt/install/apache-dolphinscheduler-3.1.5-bin.tar.gz | grep Change > /opt/install/changetime.log

3.3 问题处理

Permission denied

[INFO] 2023-05-22 08:49:36.055 +0000 - task run command: sudo -u testTenant -E bash
...
[INFO] 2023-05-22 08:49:37.064 +0000 -  -> /opt/install/saveChangeTime.sh: line 2: changetime.log: Permission denied

问题说明,运行shell脚本时会使用租户的名称testTenant 进行运行,此用户没有文件的写入权限。

目录
相关文章
|
1月前
|
Java 测试技术 Linux
jmeter-分布式部署之负载机的设置
jmeter-分布式部署之负载机的设置
45 1
|
2月前
|
消息中间件 关系型数据库 MySQL
分布式事物-全面详解(学习总结---从入门到深化)
分布式事物-全面详解(学习总结---从入门到深化)
1469 0
|
26天前
|
运维 监控 Java
推荐一款好用的Java分布式任务调度框架!
推荐一款好用的Java分布式任务调度框架!
158 0
|
2月前
|
消息中间件 Dubbo 应用服务中间件
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
72 0
|
3月前
|
消息中间件 RocketMQ 微服务
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)(下)
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)
37 0
|
5天前
|
Docker 容器 关系型数据库
【PolarDB-X从入门到精通】 第四讲:PolarDB分布式版安装部署(源码编译部署)
本期课程将于4月11日19:00开始直播,内容包括源码编译基础知识和实践操作,课程目标是使学员掌握源码编译部署技能,为未来发展奠定基础,期待大家在课程中取得丰富的学习成果!
【PolarDB-X从入门到精通】 第四讲:PolarDB分布式版安装部署(源码编译部署)
|
2月前
|
Java 数据库连接 API
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
分布式事物【XA强一致性分布式事务实战、Seata提供XA模式实现分布式事务】(五)-全面详解(学习总结---从入门到深化)
53 0
|
2月前
|
存储 Oracle 关系型数据库
分布式事物【Seata实现、下载启动Seata服务、搭建聚合父工程构建】(四)-全面详解(学习总结---从入门到深化)
分布式事物【Seata实现、下载启动Seata服务、搭建聚合父工程构建】(四)-全面详解(学习总结---从入门到深化)
45 0
|
3月前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
79 2
|
17天前
|
调度
xxl-job分布式任务调度
xxl-job分布式任务调度
17 1