暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Apache DolphinScheduler 集群部署

数码百科 2024-03-24
224

概述

定义

dolphinscheduler 官网地址** **https://dolphinscheduler.apache.org/

dolphinscheduler GitHub地址** **https://github.com/apache/dolphinscheduler

Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,不能直观监控任务健康状态等问题,使调度系统在数据处理流程中开箱即用;以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作。

建议配置

Linux 操作系统版本要求:

操作系统版本
Red Hat Enterprise Linux7.0 及以上
CentOS7.0 及以上
Oracle Enterprise Linux7.0 及以上
Ubuntu LTS16.04 及以上

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

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

注意:

  • 以上建议配置为部署 DolphinScheduler 的最低配置,生产环境强烈推荐使用更高的配置

  • 硬盘大小配置建议 50GB+ ,系统盘和数据盘分开

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

组件默认端口说明
MasterServer5678非通信端口,只需本机端口不冲突即可
WorkerServer1234非通信端口,只需本机端口不冲突即可
ApiApplicationServer12345提供后端通信端口

注意:

  • 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 使用之前文章已部署好的,下面前置准备工作和准备启动环境都是在三台上都要执行

前置准备工作

安装每一台服务器都准备下面的前置条件

  • JDK(1.8+)

  • 数据库:PostgreSQL (8.2.15+) 或者 MySQL (5.7+),两者任选其一即可,如 MySQL 则需要 JDBC Driver 8.0.16,我们这里选择 MySQL。

  • 注册中心:ZooKeeper (3.4.6+)

  • 进程树分析

    • macOS安装pstree

    • Fedora/Red/Hat/CentOS/Ubuntu/Debian安装psmisc
      ** yum -y install psmisc**

  • 注意: DolphinScheduler 本身不依赖 Hadoop、Hive、Spark,但如果你运行的任务需要依赖他们,就需要有对应的环境支持。

准备启动环境

  • 配置用户免密及权限:创建部署用户,并且一定要配置 sudo
     免密。以创建 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" 这行,也请注释掉。

  • 配置机器SSH免密登陆:由于安装的时候需要向不同机器发送资源,所以要求各台机器间能实现SSH免密登陆。配置免密登陆的步骤如下:

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 dolphinscheduler@192.168.5.53:/tmp/dolphinscheduler
scp ~/.ssh/id_rsa.pub dolphinscheduler@192.168.12.27:/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

  • DolphinScheduler 的数据库配置。

  • 一些任务类型外部依赖路径或库文件,如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

使用上面创建的部署用户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
) 的按钮即可。项目首页包含该项目的任务状态统计、流程状态统计、工作流定义统计。这几个指标的说明如下

  • 任务状态统计**:在指定时间范围内,统计任务实例中状态为提交成功、正在运行、准备暂停、暂停、准备停止、停止、失败、成功、需要容错、kill、等待线程的个数**

  • 流程状态统计**:在指定时间范围内,统计工作流实例中状态为提交成功、正在运行、准备暂停、暂停、准备停止、停止、失败、成功、需要容错、kill、等待线程的个数**

  • 工作流定义统计**:统计用户创建的工作流定义及管理员授予该用户的工作流定义**

如果需要在某台服务器上启动所有配置的服务或者某个服务

# 一键停止集群所有服务
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


文章转载自数码百科,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论