伪集群部署
1. 准备环境
1.1 软硬件环境配置建议
DolphinScheduler 作为一款开源分布式工作流任务调度系统,可以很好地部署和运行在 Intel 架构服务器及主流虚拟化环境下,并支持主流的Linux操作系统环境
1.1.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.1.2 服务器建议配置
DolphinScheduler 支持运行在 Intel x86-64 架构的 64 位通用硬件服务器平台。对生产环境的服务器硬件配置有以下建议:
生产环境
CPU | 内存 | 硬盘类型 | 网络 | 实例数量 |
---|---|---|---|---|
4核+ | 8 GB+ | SAS | 千兆网卡 | 1+ |
注意:
- 以上建议配置为部署 DolphinScheduler 的最低配置,生产环境强烈推荐使用更高的配置
- 硬盘大小配置建议 50GB+ ,系统盘和数据盘分开
1.1.3 网络要求
DolphinScheduler正常运行提供如下的网络端口配置:
组件 | 默认端口 | 说明 |
---|---|---|
MasterServer | 5678 | 非通信端口,只需本机端口不冲突即可 |
WorkerServer | 1234 | 非通信端口,只需本机端口不冲突即可 |
ApiApplicationServer | 12345 | 提供后端通信端口 |
注意:
- MasterServer 和 WorkerServer 不需要开启网络间通信,只需本机端口不冲突即可
- 管理员可根据实际环境中 DolphinScheduler 组件部署方案,在网络侧和主机侧开放相关端口
1.1.4 客户端 Web 浏览器要求
DolphinScheduler 推荐 Chrome 以及使用 Chromium 内核的较新版本浏览器访问前端可视化操作界面
1.1.5 环境准备(当前示例、文件均在/opt下)
- 操作系统:linux centos 7.7
- 部署版本:apache-dolphinscheduler-3.1.4-bin
- JDK:配置Java环境,将JAVA_HOME配置于PATH中,推荐版本使用jdk8+
#1. 创建文件夹,上传包
mkdir /opt/java
cd /opt/java
rz(或者其他上传方式)
#2. 解压
tar -zxvf jdk-8u152-linux-x64.tar.gz
#3. 配置环境变量
cd jdk1.8.0_152
pwd (当前为/opt/java/jdk1.8.0_152)
vim /etc/profile
export JAVA_HOME=/opt/java/jdk1.8.0_152
export JRE_HOME=${JAVA_HOME}/jre
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
#4. 验证
java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
- 数据库:本文使用的是MySQL 8.0.26版本,也可以使用5.7版本及以上,或者是使用PostgreSQL数据库(8.2.15+),两者任选其一即可,如 MySQL 则需要 JDBC Driver 8.0.16
#创建文件夹
cd /opt
mkdir mysql
#上传 并解压
cd mysql
tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar
#开始安装 如果命令执行失败 加上 --force nodeps
rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm
yum install openssl-devel
rpm -ivh mysql-community-devel-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm
#启动服务
systemctl start mysqld
#获取当前生成的随机密码
grep 'temporary password' /var/log/mysqld.log
#登录mysql
mysql -uroot -p
#更改mysql限制
set global validate_password.policy = 0;
set global validate_password.length = 6;
#修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
#创建用户提供外部访问并赋权
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
grant all on *.* to 'root'@'%';
#关闭防火墙
#查看防火墙状态,如果是active(running),证明是打开的
systemctl status firewalld.service
#关闭防火墙
systemctl stop firewalld.service
#查看状态是否为disavtive(dead)
systemctl status firewalld.service
#永久关闭防火墙
systemctl disable firewalld.service
navicate连接mysql,并创建新数据库ds
复制驱动包到对应的服务路径下api、alert、work、mast、standalone(单机模式下的数据源切换)
#复制mysql的驱动到对应libs目录中
cp /opt/mysql/mysql-connector-java-8.0.16.jar ./alert-server/libs/
cp /opt/mysql/mysql-connector-java-8.0.16.jar ./master-server/libs/
cp /opt/mysql/mysql-connector-java-8.0.16.jar ./worker-server/libs/
cp /opt/mysql/mysql-connector-java-8.0.16.jar ./api-server/libs/
cp /opt/mysql/mysql-connector-java-8.0.16.jar ./standalone-server/libs/standalone-server/
初始化,执行安装包 \tools\sql\sql 路径下的dolphinscheduler_mysql.sql文件
- 注册中心:zookeeper(3.4.6+) 单机环境跳过,开始第二步的安装
#创建文件夹
cd /opt
mkdir zooKeeper
#上传并解压
tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz
#进入到conf目录
cd /opt/zooKeeper/apache-zookeeper-3.5.6-bin/conf/
#拷贝
cp zoo_sample.cfg zoo.cfg
#打开目录
cd /opt/zooKeeper/
#创建zooKeeper存储目录
mkdir zkdata
#修改zoo.cfg
vim /opt/zooKeeper/apache-zookeeper-3.5.6-bin/conf/zoo.cfg
#修改存储路径
dataDir=/opt/zooKeeper/zkdata
#启动
cd /opt/zooKeeper/apache-zooKeeper-3.5.6-bin/bin/
#启动
./zkServer.sh start
验证
成功启动:
启动失败:
- 其他大数据相关组件:Hadoop 3.3.1 、Hive 3.1.2 、DataX 3.0、Spark 3.1.2等
- 创建部署用户,并为该用户配置免登录,以创建dolphinscheduler用户为例(
准备执行DS安装程序的服务器上创建即可
)
# 创建用户需使用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
- 修改域名映射
vim /ect/hosts
#如下 本地 映射为ds1
127.0.0.1 ds1 localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
- 配置免密登录
#按回车 根据提示 默认生成密钥对
ssh-keygen -t rsa
#配置免密登录 xxx映射的域名
ssh-copy-id xxx
#验证
ssh xxx
2. 开始安装
- 单机部署(更换数据源)
#修改配置文件 dolphinscheduler_env.sh 注意 是bin/env下的,不是standalone下的,否则会被覆盖
#修改java路径 和环境变量一致
export JAVA_HOME=${JAVA_HOME:-/opt/java/jdk1.8.0_152}
#当前配置的是mysql
export DATABASE=${DATABASE:-mysql}
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://ds1:3306/ds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true"
export SPRING_DATASOURCE_USERNAME="root"
export SPRING_DATASOURCE_PASSWORD="xxxx"
#修改application.ymal
pwd
/opt/soft/apache-dolphinscheduler-3.1.4-bin/standalone-server/conf
vim application.ymal
spring:
jackson:
time-zone: UTC
date-format: "yyyy-MM-dd HH:mm:ss"
banner:
charset: UTF-8
cache:
# default enable cache, you can disable by `type: none`
type: none
cache-names:
- tenant
- user
- processDefinition
- processTaskRelation
- taskDefinition
caffeine:
spec: maximumSize=100,expireAfterWrite=300s,recordStats
sql:
init:
schema-locations: classpath:sql/dolphinscheduler_mysql.sql
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.149.198:3306/ds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: xxxx
---
spring:
config:
activate:
on-profile: mysql
sql:
init:
schema-locations: classpath:sql/dolphinscheduler_mysql.sql
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.149.198:3306/ds?useUnicode=true&characterEncoding=UTF-8
username: root
password: xxxx
—单机部署完成 使用命令 ./bin/dolphinscheduler-daemon.sh start standalone-server
- 解压安装包
#1. 上传
cd /opt
mkdir soft
#2. 移动
mv /opt/soft/apache-dolphinscheduler-3.1.4-bin.tar.gz /home/dolphinscheduler
#3. 解压
cd /home/dolphinscheduler
tar -zxvf apache-dolphinscheduler-3.1.4-bin.tar.gz
#4. 给用户dolphinscheduler赋权
chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-*-bin
#5. 切换用户
su - dolphinscheduler
#6. 修改配置文件(install_env.sh、dolphinscheduler_env.sh)
cd /home/dolphinscheduler/apache-dolphinscheduler-3.1.4-bin/bin/env
vim install_env.sh
#只保留映射后的域名 ds1 伪集群所有服务都在一台机器上
ips=${ips:-"ds1"}
masters=${masters:-"ds1"}
workers=${workers:-"ds1:default"}
alertServer=${alertServer:-"ds1"}
apiServers=${apiServers:-"ds1"}
#修改安装默认路径
installPath=${installPath:-"/home/dolphinscheduler/dolphinscheduler"}
#查看环境变量配置
echo $JAVA_HOME
/opt/java/jdk1.8.0_152
#编辑
vim dolphinscheduler_env.sh
#修改java路径 和环境变量一致
export JAVA_HOME=${JAVA_HOME:-/opt/java/jdk1.8.0_152}
#当前配置的是mysql
export DATABASE=${DATABASE:-mysql}
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://ds1:3306/ds?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true"
export SPRING_DATASOURCE_USERNAME="root"
export SPRING_DATASOURCE_PASSWORD="123456"
#执行安装
sh ../install.sh
#启动成功
====================== dolphinscheduler server config =============================
1.dolphinscheduler server node config hosts:[ ds1 ]
2.master server node config hosts:[ ds1 ]
3.worker server node config hosts:[ ds1:default ]
4.alert server node config hosts:[ ds1 ]
5.api server node config hosts:[ ds1 ]
====================== dolphinscheduler server status =============================
node server state
ds1 Begin status master-server......
master-server [ RUNNING ]
End status master-server.
ds1 Begin status worker-server......
worker-server [ RUNNING ]
End status worker-server.
ds1 Begin status alert-server......
alert-server [ RUNNING ]
End status alert-server.
ds1 Begin status api-server......
api-server [ RUNNING ]
End status api-server.
#查看进程
jps
#四个服务都正常启动
10272 WorkerServer
10229 MasterServer
10360 ApiApplicationServer
10315 AlertServer
23407 Jps
浏览器访问地址 http://ip:12345/dolphinscheduler/ui 即可登录系统UI。默认的用户名和密码是 admin/dolphinscheduler123
- 相关命令
# 一键停止集群所有服务
sh /usr/local/dolphinscheduler-3.1.4/bin/stop-all.sh
# 一键开启集群所有服务
sh /usr/local/dolphinscheduler-3.1.4/bin/start-all.sh
# 启停 Master
sh /usr/local/dolphinscheduler-3.1.4/bin/dolphinscheduler-daemon.sh stop master-server
sh /usr/local/dolphinscheduler-3.1.4/bin/dolphinscheduler-daemon.sh start master-server
# 启停 Worker
sh /usr/local/dolphinscheduler-3.1.4/bin/dolphinscheduler-daemon.sh start worker-server
sh /usr/local/dolphinscheduler-3.1.4/bin/dolphinscheduler-daemon.sh stop worker-server
# 启停 Api
sh /usr/local/dolphinscheduler-3.1.4/bin/dolphinscheduler-daemon.sh start api-server
sh /usr/local/dolphinscheduler-3.1.4/bin/dolphinscheduler-daemon.sh stop api-server
# 启停 Logger
sh /usr/local/dolphinscheduler-3.1.4/bin/dolphinscheduler-daemon.sh start logger-server
sh /usr/local/dolphinscheduler-3.1.4/bin/dolphinscheduler-daemon.sh stop logger-server
# 启停 Alert
sh /usr/local/dolphinscheduler-3.1.4/bin/dolphinscheduler-daemon.sh start alert-server
sh /usr/local/dolphinscheduler-3.1.4/bin/dolphinscheduler-daemon.sh stop alert-server
# 启停 Python Gateway
sh /usr/local/dolphinscheduler-3.1.4/bin/dolphinscheduler-daemon.sh start python-gateway-server
sh /usr/local/dolphinscheduler-3.1.4/bin/dolphinscheduler-daemon.sh stop python-gateway-server
-
开启资源管理模块
- 当前只展示对接本地,因为是伪集群部署,需要更改两个文件,分别是api-server和worker-server下的common.properties文件,当前操作不需要安装hadoop
# resource storage type: HDFS, S3, NONE resource.storage.type=HDFS #上传后的存放路径,可以自由配置 resource.storage.upload.base.path=/tmp/dolphinscheduler # resource.hdfs.fs.defaultFS=file:///