dolphinscheduler 官网地址 https://dolphinscheduler.apache.org/
dolphinscheduler GitHub地址 https://github.com/apache/dolphinscheduler
Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,不能直观监控任务健康状态等问题,使调度系统在数据处理流程中开箱即用;以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作。
Master/Worker
cpu load,memory,cpu在线查看。Linux 操作系统版本要求:
操作系统 | 版本 |
---|---|
Red Hat Enterprise Linux | 7.0 及以上 |
CentOS | 7.0 及以上 |
Oracle Enterprise Linux | 7.0 及以上 |
Ubuntu LTS | 16.04 及以上 |
服务器建议配置:DolphinScheduler 支持运行在 Intel x86-64 架构的 64 位通用硬件服务器平台。对生产环境的服务器硬件配置有以下建议:
CPU | 内存 | 硬盘类型 | 网络 | 实例数量 |
---|---|---|---|---|
4核+ | 8 GB+ | SAS | 千兆网卡 | 1+ |
注意:
- 以上建议配置为部署 DolphinScheduler 的最低配置,生产环境强烈推荐使用更高的配置
- 硬盘大小配置建议 50GB+ ,系统盘和数据盘分开
网络要求,DolphinScheduler正常运行提供如下的网络端口配置:
组件 | 默认端口 | 说明 |
---|---|---|
MasterServer | 5678 | 非通信端口,只需本机端口不冲突即可 |
WorkerServer | 1234 | 非通信端口,只需本机端口不冲突即可 |
ApiApplicationServer | 12345 | 提供后端通信端口 |
注意:
- MasterServer 和 WorkerServer 不需要开启网络间通信,只需本机端口不冲突即可
- 管理员可根据实际环境中 DolphinScheduler 组件部署方案,在网络侧和主机侧开放相关端口
客户端 Web 浏览器要求:DolphinScheduler 推荐 Chrome 以及使用 Chromium 内核的较新版本浏览器访问前端可视化操作界面
如果是简单体验 DolphinScheduler 的功能则使用Standalone方式接口,这里可以使用二进制也可以docker方式安装;如果想体验更完整的功能或者更大的任务量推荐使用伪集群部署,这里可以使用二进制也可以docker-compose方式安装;如果你是在生产中使用,推荐使用集群部署或者kubernetes;我们这里则选择更好理解其架构和组成的二进制集群部署方式。
# 下载最新版本3.0.0-beta-2,也可以选择2.0.6
wget https://dlcdn.apache.org/dolphinscheduler/3.0.0-beta-2/apache-dolphinscheduler-3.0.0-beta-2-bin.tar.gz
# 解压文件
tar -xvf apache-dolphinscheduler-3.0.0-beta-2-bin.tar.gz
准备三台服务器安装集群,ZooKeeper和MySQL 使用之前文章已部署好的,下面前置准备工作和准备启动环境都是在三台上都要执行
安装每一台服务器都准备下面的前置条件
pstree
psmisc
yum -y install psmiscsudo
免密。以创建 dolphinscheduler 用户为例:# 创建用户需使用 root 登录
useradd dolphinscheduler
# 添加密码
echo "dolphinscheduler" | passwd --stdin dolphinscheduler
# 配置 sudo 免密
sed -i '$adolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' /etc/sudoers
sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers
# 修改目录权限,使得部署用户对二进制包解压后的 apache-dolphinscheduler-*-bin 目录有操作权限
chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-*-bin
注意:因为任务执行服务是以
sudo -u {linux-user}
切换不同 linux 用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。初学习者不理解的话,完全可以暂时忽略这一点。如果发现/etc/sudoers
文件中有 “Defaults requirett” 这行,也请注释掉。
su dolphinscheduler
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 在运行install.sh机器上配置连接其他机器的免密
scp ~/.ssh/id_rsa.pub [email protected]:/tmp/dolphinscheduler
scp ~/.ssh/id_rsa.pub [email protected]:/tmp/dolphinscheduler
# 在192.168.5.53和192.168.12.27上执行
cat /tmp/dolphinscheduler/id_rsa.pub >> ~/.ssh/authorized_keys
注意: 配置完成后,可以通过运行命令
ssh localhost
判断是否成功,如果不需要输入密码就能ssh登陆则证明成功。
完成基础环境的准备后,需要根据你的机器环境修改配置文件。配置文件可以在目录 bin/env
中找到,他们分别是 并命名为 install_env.sh
和 dolphinscheduler_env.sh
。
install_env.sh修改内容如下:
ips=${ips:-"192.168.5.52,192.168.5.53,192.168.12.27"}
sshPort=${sshPort:-"22"}
masters=${masters:-"192.168.5.52,192.168.5.53"}
workers=${workers:-"192.168.5.52:default,192.168.5.53:default,192.168.12.27:default"}
alertServer=${alertServer:-"192.168.5.52"}
apiServers=${apiServers:-"192.168.5.53"}
installPath=${installPath:-"/tmp/dolphinscheduler"}
deployUser=${deployUser:-"dolphinscheduler"}
zkRoot=${zkRoot:-"/dolphinscheduler"}
dolphinscheduler_env.sh
JAVA_HOME
和 SPARK_HOME
都是在这里定义的。zookeeper
。DolphinScheduler 元数据存储在关系型数据库中,目前支持 PostgreSQL 和 MySQL,这里使用 MySQL 8.0.28则需要手动下载 mysql-connector-java 驱动(8.0.28) 并移动到 DolphinScheduler 的 lib目录下(tools/libs/
)。此外其他几个模块也都需要mysql-connector-java-8.0.28.jar
cp tools/libs/mysql-connector-java-8.0.28.jar master-server
cp tools/libs/mysql-connector-java-8.0.28.jar worker-server/libs/
cp tools/libs/mysql-connector-java-8.0.28.jar alert-server/libs/
cp tools/libs/mysql-connector-java-8.0.28.jar api-server/libs/
配置数据库和用户
mysql -uroot -p
mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
# 修改 {user} 和 {password} 为你希望的用户名和密码
mysql> CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler123';
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%';
mysql> CREATE USER 'dolphinscheduler'@'localhost' IDENTIFIED BY 'dolphinscheduler123';
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'localhost';
mysql> FLUSH PRIVILEGES;
然后修改./bin/env/dolphinscheduler_env.sh
,将username和password改成你在上一步中设置的用户名dolphinscheduler和密码dolphinscheduler123
export DATABASE=${DATABASE:-mysql}
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://192.168.50.95:3308/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true"
export SPRING_DATASOURCE_USERNAME=dolphinscheduler
export SPRING_DATASOURCE_PASSWORD=dolphinscheduler123
完成上述步骤后已为 DolphinScheduler 创建一个新数据库,现在可以通过快速的 Shell 脚本来初始化数据库
sh tools/bin/upgrade-schema.sh
执行后我们查看dolphinscheduler数据库,部分表如下
使用上面创建的部署用户dolphinscheduler运行以下命令完成部署,部署后的运行日志将存放在 logs 文件夹内
sh ./bin/install.sh
查看结果已经成功启动整个集群,每一台都运行配置模块部分
浏览器访问地址 http://192.168.5.53:12345/dolphinscheduler/ui 即可登录系统UI。webUi 在org.apache.dolphinscheduler.api.ApiApplicationServer部署的机器是哪个,默认的用户名和密码是 admin/dolphinscheduler123 ,登录后进入首页,首页包含用户所有项目的任务状态统计、流程状态统计、工作流定义统计。DolphinScheduler 支持两种类型的内置主题,包括 Dark
和 Light
。当您想改变主题时,只需单击顶部控制栏在 语言 左侧名为 Dark
(or Light
) 的按钮即可。项目首页包含该项目的任务状态统计、流程状态统计、工作流定义统计。这几个指标的说明如下
如果需要在某台服务器上启动所有配置的服务或者某个服务
# 一键停止集群所有服务
sh ./bin/stop-all.sh
# 一键开启集群所有服务
sh ./bin/start-all.sh
# 启停 Master
sh ./bin/dolphinscheduler-daemon.sh stop master-server
sh ./bin/dolphinscheduler-daemon.sh start master-server
# 启停 Worker
sh ./bin/dolphinscheduler-daemon.sh start worker-server
sh ./bin/dolphinscheduler-daemon.sh stop worker-server
# 启停 Api
sh ./bin/dolphinscheduler-daemon.sh start api-server
sh ./bin/dolphinscheduler-daemon.sh stop api-server
# 启停 Alert
sh ./bin/dolphinscheduler-daemon.sh start alert-server
sh ./bin/dolphinscheduler-daemon.sh stop alert-server
可以查看当前Master、Worker、DB的系统情况,包括CPU、内存和平均负载
安全中心只有管理员账户才有权限操作,分别有队列管理、租户管理、用户管理、告警组管理、worker分组管理、令牌管理等功能,在用户管理模块可以对资源、数据源、项目等授权。接下来先挑几个必要功能操作下
worker.properties
配置文件中参数 worker.tenant.auto.create=true
实现当 linux 用户不存在时自动创建该用户。worker.tenant.auto.create=true
参数会要求 worker 可以免密运行 sudo
命令每个 worker 节点都会归属于自己的 worker 分组,默认分组为 default。在任务执行时,可以将任务分配给指定 worker 分组,最终由该组中的 worker 节点执行该任务。
conf/worker.properties
配置文件. 修改 worker.groups 参数.worker.properties
中的配置。worker:
groups:
- default
- bigdatabase
默认有一个default组,三台Worker节点都在这个组里
新建一个大数据基础工作组,选择Worker,确定即可。
注销退出系统后用前面创建的普通用户testuser重新登录系统,切换到项目管理模块,点击“创建项目”按钮,输入项目名称,项目描述,点击“提交”,创建演示项目
本篇最后我们就以一个简单执行多个依赖的shell脚本的工作流来揭开使用的大门。
进入工作流定义页面,点击“创建工作流”按钮,进入工作流DAG编辑页面,工具栏中拖拽 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TVT7yVWw-1659111362070)(shell.png)] 到画板中,新增一个Shell任务,如下图所示
test.sh
,脚本中调用资源命令为 sh test.sh
;其余两个节点也相同创建方式,创建后通过拖拉编排任务的依赖关系,也可以选择任务节点后选择前置任务;配置任务之间的依赖关系: 点击任务节点的右侧加号连接任务;如下图所示,任务 shell-nodeA 和任务shell-nodeB 并行执行,当任务shell-nodeA和任务shell-nodeB执行完shell-nodeC会同时执行。如要删除依赖关系: 点击右上角"箭头"图标[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QUQtvl6n-1659111362085)(arrow.png)],选中连接线,点击右上角"删除"图标[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vIJI4yCV-1659111362088)(delete.png)],删除任务间的依赖关系。
保存工作流定义: 点击”保存“按钮,弹出"设置DAG图名称"弹框,如下图所示,输入工作流定义名称,工作流定义描述,设置全局参数(选填),点击"添加"按钮,工作流定义创建成功。
通过如下操作运行工作流,生成工作流示例
工作流示例可以点击重跑按钮
查看任务定义
查看任务示例,我们重跑了一次因此任务示例有6个
可以多次继续重跑,在任务实例列表操作按钮还可以查看日志和下载日志
**本人博客网站 **IT小神 www.itxiaoshen.com