一、概述
1、什么是DolphinScheduler
Apache DolphinScheduler (下面简称DS) 是一个为企业级应用场景设计的开源任务调度系统,它提供了分布式的、可扩展的并且易于使用的可视化界面,让用户能够高效地管理和调度复杂的工作流任务,覆盖从任务创建到监控的全生命周期数据处理流程。它旨在通过其基于有向无环图(DAG)的任务编排能力,解决大数据任务中复杂的依赖关系和ETL流程监控难题,它不仅能够实现实时的任务状态监控,还提供了包括任务重试、失败恢复、暂停及终止等一系列操作,以增强数据研发流程的可靠性和效率。
DAG --有向无环图,有顺序,但是不会形成环的图表。
2、特性
2.1 使用简单
Apache DolphinScheduler 提供了一个简单易用的可视化界面,用户可以通过拖拽操作轻松定义和管理复杂的工作流;
2.2使用场景丰富
它支持多种任务类型,包括 Shell、MR、Spark、SQL 等超过十种任务类型,并且具有跨语言的兼容性和良好的扩展性;
2.3、丰富的工作流操作
系统内置了丰富的操作选项,如定时、暂停、恢复和停止工作流等功能,方便用户进行全局和局部的参数控制;
2.4、高可靠性
DolphinScheduler 还采用了去中心化的高可靠性设计,支持原生 HA 和过载容错,确保了系统的稳定运行;
2.5、高扩展性
对多租户和在线资源管理的支持,使其能够应对大规模的数据任务需求,展示出卓越的高扩展性。
3、DS架构
DolphinScheduler的主要角色如下:
MasterServer采用分布式无中心设计理念,MasterServer主要负责 DAG 任务切分、任务提交、任务监控,并同时监听其它MasterServer和WorkerServer的健康状态。
WorkerServer也采用分布式无中心设计理念,WorkerServer主要负责任务的执行和提供日志服务。
ZooKeeper服务,系统中的MasterServer和WorkerServer节点都通过ZooKeeper来进行集群管理和容错。
Alert服务,提供告警相关服务。
API接口层,主要负责处理前端UI层的请求。
UI,系统的前端页面,提供系统的各种可视化操作界面。
二、DS的部署说明
1、操作系统要求
操作系统 | 版本 |
Red Hat Enterprise Linux | 7.0 及以上 |
CentOS | 7.0 及以上 |
Oracle Enterprise Linux | 7.0 及以上 |
Ubuntu LTS | 16.04 及以上 |
2、网络要求
组件 | 默认端口 | 说明 |
MasterServer | 5678 | 非通信端口,只需本机端口不冲突即可 |
WorkerServer | 1234 | 非通信端口,只需本机端口不冲突即可 |
ApiApplicationServer | 12345 | 提供后端通信端口 |
3、服务器建议配置
CPU | 内存 | 硬盘类型 | 网络 | 实例数量 |
4核+ | 8 GB+ | SAS | 千兆网卡 | 1+ |
三、搭建单机版DS
1、上传解压
推荐使用新版本的DS:
apache-dolphinscheduler-3.1.8-bin没有的翻我第一篇文章去我的百度网盘上下载
tar -zxvf xxx.tar.gz -C /opt/installs/
xxx是你的压缩包名字
-C的意思是解压到后面的文件夹下,没有的要么创建,要么解压到本目录下,即-C以及后面的都不要带
2、上传mysql驱动包
到这五个模块的lib下
api-server/libs
alert-server/libs
master-server/libs
worker-server/libs
tools/libs没有这个驱动包的也去我百度网盘上拿
3、创建数据库
使用 MySQL 对 DolphinScheduler 的元数据进行管理,不使用默认的数据库 H2。
连接你部署DS的虚拟机的mysql,在这个mysql下创建
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
4、创建新用户(非必需)
假如你想创建,会遇到密码太简单的问题:
如果提示密码等级过低:
#mysql8
set global validate_password.policy=LOW;
set global validate_password.length=4;
set global validate_password.mixed_case_count=0;
set global validate_password.number_count=0;
set global validate_password.special_char_count=0;创建新用户:
CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%';
FLUSH PRIVILEGES;
还是在那个mysql下操作。
5、数据库配置信息
最好在 "apache-dolphinscheduler-3.1.8-bin/bin" 下运行:
export DATABASE=mysql
export SPRING_PROFILES_ACTIVE=dolphinscheduler
export SPRING_DATASOURCE_URL="jdbc:mysql://bigdata01:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true"
export SPRING_DATASOURCE_USERNAME=dolphinscheduler
export SPRING_DATASOURCE_PASSWORD=123456
6、初始化数据库
bash tools/bin/upgrade-schema.sh
7、修改配置文件
在 apache-dolphinscheduler-3.1.8-bin/standalone-server/conf 下有一个 application.yaml
将其中关于数据库连接的部分修改为指向你的 MySQL 实例,包括用户名、密码、数据库名等信息。
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://bigdata01:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
username: dolphinscheduler
password: 123456
8、启动
注意: Standalone 仅建议 20 个以下工作流使用,因为其采用内存式的 H2 Database, Zookeeper Testing Server,任务过多可能导致不稳定,并且如果重启或者停止 standalone-server 会导致内存中数据库里的数据清空。
如何启动和关闭单机版:
# 启动 Standalone Server 服务
bash ./bin/dolphinscheduler-daemon.sh start standalone-server
# 停止 Standalone Server 服务
bash ./bin/dolphinscheduler-daemon.sh stop standalone-server
# 查看 Standalone Server 状态
bash ./bin/dolphinscheduler-daemon.sh status standalone-server
四、登录DS
1、访问地址及账号密码
访问地址:http://bigdata01:12345/dolphinscheduler/ui
账号和密码: admin dolphinscheduler123
2、安全中心
安全中心只有管理员账户才有权限操作,其中包括 Yarn 队列管理、租户管理、用户管理、告警组管理、worker 分组管理、令牌管理等功能,在用户管理模块可以对资源、数据源、项目等授权
3、租户管理
租户管理允许管理员配置和管理不同租户的权限和资源使用情况。
租户是 DolphinScheduler 中的一个概念,其实就是对应着 Linux 系统的一个用户,代表着一个独立的业务单位或用户组。
点击创建租户,加入linux系统的一个用户
4、用户管理
用户管理模块允许管理员创建、编辑和删除用户账户,并配置用户的访问权限。通过用户管理,可以细粒度地控制用户对 DolphinScheduler 的操作权限。
添加用户
设置登录 DolphinScheduler 的新用户,关联指定租户、队列、邮件以及手机号。
5、告警组管理
告警组管理用于配置系统中的告警组,定义告警的接收人和通知方式。这样,在系统出现异常或故障时,相关人员可以迅速得到通知,以便及时采取行动。
添加告警实例
定义一个告警的类别以及实例信息,填写对应的信息。
添加告警组
为设置的告警实例分配告警组。
6、Worker
Worker 分组管理允许管理员对 DolphinScheduler 中的 Worker 节点进行分组和管理,这有助于优化任务调度和资源利用。
添加 Worker 分组管理
五、使用
1、创建项目
2、创建任务
点击进入刚刚创建的项目
下图为工作流配置页面,共包含三个模快,分别为工作流定义、工作流实例和任务实例。
工作流定义:用于定义工作流,包括工作流各节点任务详情及各节点依赖关系等。
工作流实例:工作流每执行一次就会生成一个工作流示例。此处可查看正在运行的工作流以及已经完成的工作流。
任务实例:工作流中的一个节点任务,每执行一次就会生成一个任务实例。此处可用于查看正在执行的节点任务以及已经完成的节点任务。
点击 工作流定义
3、执行任务
先上线再执行
点击执行之后
点击确定,此时工作流实例就会出现
一次只有一个,但我已经执行多次所以出现较多。
假如你的任务运行了,但是没有工作流实例,只提示成功,可以查看一下是否为内存不够了。
worker 你的IP:1234 current cpu load average 0.43 is too high or available memory 0.17G is too low
提升一下内存即可。
此时点击 任务实例-->查看日志 即可查看你执行之后的结果