集群规划

集群模式下,可配置多个 Master 及多个 Worker , 一般可配置 2~3 个 Master, 若干个 Worker

node101 node102 node103
Master
Alert
ApiApplication
Worker
Logger

前置准备工作

三台节点均需部署JDK(1.8+),并配置相关环境变量

https://blog.csdn.net/qq_44226094/article/details/122685082

需部署数据库,支持MySQL(5.7+)或者 PostgreSQL(8.2.15+)

https://blog.csdn.net/qq_44226094/article/details/123361850

需部署 Zookeeper(3.4.6+)

https://blog.csdn.net/qq_44226094/article/details/123119682

各节点都安装进程树分析工具 psmisc

  1. sudo yum install -y psmisc

解压 DolphinScheduler 安装包

上传 DolphinScheduler 安装包到 node190 节点的 /opt/software 目录

解压安装包到当前目录

  1. tar -zxvf apache-dolphinscheduler-2.0.5-bin.tar.gz

DS 集群部署 - 图1

创建元数据库及用户

DolphinScheduler 元数据存储在关系型数据库中,故需创建相应的数据库和用户

创建数据库

  1. CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

DS 集群部署 - 图2

创建用户

CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler';

DS 集群部署 - 图3

出现以下错误信息,表明新建用户的密码过于简单:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

set global validate_password_policy=0;
set global validate_password_length=4;

DS 集群部署 - 图4

赋予用户相应权限

GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%';

flush privileges;

DS 集群部署 - 图5

配置一键部署脚本

修改解压目录下的 conf/config 目录下的 install_config.conf 文件

vim conf/config/install_config.conf

修改内容 :

# 将要部署任一 DolphinScheduler 服务的服务器主机名或 ip 列表
ips="node182,node189,node190,node196"

# master 所在主机名列表,必须是 ips 的子集
masters="node190"

# worker 主机名及队列,此处的 ip 必须在 ips 列表中
workers="node182:defalut,node189:default,node190:default,node196:default"

# 告警服务所在服务器主机名
alertServer="node190"

# api 服务所在服务器主机名
apiServers="node190"

# 不需要的配置项,可以保留默认值,也可以用 # 注释
# pythonGatewayServers="ds1"

# DS 安装路径,如果不存在会创建
installPath="/opt/module/dolphinscheduler-2.0.5"

# 部署用户,任务执行服务是以 sudo -u {linux-user} 切换不同 Linux 用户的方式来实现多租户运行作业,因此该用户必须有免密的 sudo 权限
deployUser="hdfs"

# 前文配置的所有节点的本地数据存储路径,需要确保部署用户拥有该目录的读写权限
dataBasedirPath="/tmp/dolphinscheduler"

# JAVA_HOME 路径
javaHome="/app/hadoop/jdk1.8.0_271"

# 注意:数据库相关配置的 value 必须加引号,否则配置无法生效

# 数据库类型
DATABASE_TYPE="mysql"

# 数据库 URL
SPRING_DATASOURCE_URL="jdbc:mysql://node190:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8"

# 数据库用户名
SPRING_DATASOURCE_USERNAME="dolphinscheduler"

# 数据库密码
SPRING_DATASOURCE_PASSWORD="dolphinscheduler"

# 注册中心插件名称, DS 通过注册中心来确保集群配置的一致性
registryPluginName="zookeeper"

# 注册中心地址,即 Zookeeper 集群的地址
registryServers="node181:2181,node182:2181,node183:2181"

# DS 在 Zookeeper 的结点名称
registryNamespace="dolphinscheduler"

# 资源存储类型
resourceStorageType="HDFS"

# 资源上传路径
resourceUploadPath="/dolphinscheduler"

#  core-site.xml and hdfs-site.xml 放在 conf
# 默认文件系统
defaultFS="hdfs://powercluster"

# yarn RM http 访问端口
resourceManagerHttpAddressPort="8088"

# Yarn RM 高可用 ip,若未启用 RM 高可用,则将该值置空
yarnHaIps=node181,node182

# Yarn RM 主机名,若启用了 HA 或未启用 RM,保留默认值
singleYarnIp=

# 拥有 HDFS 根目录操作权限的用户
hdfsRootUser="hdfs"

复制配置文件 :

cp /app/hadoop/hadoop-3.1.2/etc/hadoop/core-site.xml /opt/software/apache-dolphinscheduler-2.0.5-bin/conf/

cp /app/hadoop/hadoop-3.1.2/etc/hadoop/hdfs-site.xml /opt/software/apache-dolphinscheduler-2.0.5-bin/conf/

DS 集群部署 - 图6

初始化数据库

拷贝 MySQL 驱动到 DolphinScheduler 的解压目录下的 lib 中,要求使用 MySQL JDBC Driver 8.0.16

cp /opt/software/mysql-connector-java-8.0.16.jar /opt/software/apache-dolphinscheduler-2.0.5-bin/lib/

执行数据库初始化脚本

数据库初始化脚本位于 DolphinScheduler 解压目录下的 script 目录中 , 即 /opt/software/apache-dolphinscheduler-2.0.5-bin/script/

./create-dolphinscheduler.sh

DS 集群部署 - 图7

部署 DolphinScheduler

启动 Zookeeper 集群

zk.sh start

部署并启动 DolphinScheduler

./install.sh

DS 集群部署 - 图8

查看 DolphinScheduler 进程

jps -l | grep dol

DS 集群部署 - 图9

访问 DolphinScheduler UI

DolphinScheduler UI 地址为 http://node190:12345/dolphinscheduler

  • 初始用户的用户名: admin
  • 密码 : dolphinscheduler123

DS 集群部署 - 图10

DolphinScheduler 启停命令

DolphinScheduler 的启停脚本均位于其安装目录的 bin 目录下

一键启停所有服务

./bin/start-all.sh
./bin/stop-all.sh

注意 : 同 Hadoop 的启停脚本进行区分

启停 Master

./bin/dolphinscheduler-daemon.sh start master-server
./bin/dolphinscheduler-daemon.sh stop master-server

启停 Worker

./bin/dolphinscheduler-daemon.sh start worker-server
./bin/dolphinscheduler-daemon.sh stop worker-server

启停 Api

./bin/dolphinscheduler-daemon.sh start api-server
./bin/dolphinscheduler-daemon.sh stop api-server

启停 Logger

./bin/dolphinscheduler-daemon.sh start logger-server
./bin/dolphinscheduler-daemon.sh stop logger-server

启停 Alert

./bin/dolphinscheduler-daemon.sh start alert-server
./bin/dolphinscheduler-daemon.sh stop alert-server