原文地址:https://mp.weixin.qq.com/s/KB0BQTRKayUiSfDTS7YJkg

集群部署方案(2 Master + 3 Worker)

主机名

ip

部署服务

hadoop31

192.168.0.31

MasterServer、WorkerServer、ApiServer

hadoop32

192.168.0.32

MasterServer、WorkerServer

hadoop33

192.168.0.33

WorkerServer、AlertServer

前置准备工作

  • 操作系统:Linux CentOS 7.9 【CPU 4核+ 内存8G+】

  • JDK:下载JDK(1.8+),安装并配置 JAVA_HOME 环境变量,并将其下的 bin 目录追加到 PATH 环境变量中。

  • 数据库:MySQL(5.7+)或者 PostgreSQL(8.2.15+),两者任选其一即可,如 MySQL 则需要JDBC Driver 8.0.16 版本。【此处使用MySQL 8.2.0,驱动使用的是:mysql-connector-j-8.2.0.jar】

  • 注册中心:Zookeeper(3.8.0+),集群模式,【此处使用 3.8.3 版本】

  • 二进制包:下载地址 https://www.apache.org/dyn/closer.lua/dolphinscheduler/3.2.0/apache-dolphinscheduler-3.2.0-bin.tar.gz

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

端口说明

组件

默认端口

说明

MasterServer

5678

非通信端口,只需本机端口不冲突即可

WorkerServer

1234

非通信端口,只需本机端口不冲突即可

ApiApplicationServer

12345

提供后端通信端口

集群部署

时间同步

服务端:192.168.0.31 客户端:192.168.0.32、192.168.0.33,服务端在31执行,客户端在32、33执行

# 服务端和客户端,安装chrony  
yum install chrony -y  
  
# 服务端和客户端,安装chrony  
yum install chrony -y  
  
# 服务端(此处也可以使用 ntp.aliyun.com 来代替 192.168.0.31,使用阿里云时间服务,如果使用31则是本机时间)  
cat > /etc/chrony.conf << EOF   
pool 192.168.0.31 iburst  
driftfile /var/lib/chrony/drift  
makestep 1.0 3  
rtcsync  
allow 192.168.0.0/24  
local stratum 10  
keyfile /etc/chrony.keys  
leapsectz right/UTC  
logdir /var/log/chrony  
EOF  
  
# 客户端  
cat > /etc/chrony.conf << EOF   
pool 192.168.0.31 iburst  
driftfile /var/lib/chrony/drift  
makestep 1.0 3  
rtcsync  
keyfile /etc/chrony.keys  
leapsectz right/UTC  
logdir /var/log/chrony  
EOF  
  
# 客服端和服务端,重启chrony,开机自启动  
systemctl restart chronyd  
systemctl enable chronyd  
  
#客户端进行验证  
chronyc sources -v  
  
# 参数解释  
#  
# pool ntp.aliyun.com iburst  
# 指定使用ntp.aliyun.com作为时间服务器池,iburst选项表示在初始同步时会发送多个请求以加快同步速度。  
#   
# driftfile /var/lib/chrony/drift  
# 指定用于保存时钟漂移信息的文件路径。  
#   
# makestep 1.0 3  
# 设置当系统时间与服务器时间偏差大于1秒时,会以1秒的步长进行调整。如果偏差超过3秒,则立即进行时间调整。  
#   
# rtcsync  
# 启用硬件时钟同步功能,可以提高时钟的准确性。  
#   
# allow 192.168.0.0/24  
# 允许192.168.0.0/24网段范围内的主机与chrony进行时间同步。  
#   
# local stratum 10  
# 将本地时钟设为stratum 10,stratum值表示时钟的准确度,值越小表示准确度越高。  
#   
# keyfile /etc/chrony.keys  
# 指定使用的密钥文件路径,用于对时间同步进行身份验证。  
#   
# leapsectz right/UTC  
# 指定时区为UTC。  
#   
# logdir /var/log/chrony  
# 指定日志文件存放目录。

配置用户权限

# 创建用户需使用 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  
chmod -R 755 apache-dolphinscheduler-*-bin

配置集群免密登陆

# 使用创建的 dolphinscheduler 登陆,配置hadoop31到hadoop32、hadoop33免密登陆  
su dolphinscheduler  
  
# hadoop31节点,生成密钥  
ssh-keygen -t rsa  
  
# hadoop31节点操作,配置向hadoop31、hadoop32、hadoop33节点免密  
ssh-copy-id hadoop31  
ssh-copy-id hadoop32  
ssh-copy-id hadoop33

ZooKeeper集群启动

集群安装,参考教程:ZooKeeper集群的安装,本文安装 ZK 版本为 3.8.3。参考教程中是 3.4.14,安装步骤都是一样儿的,对应着来就可以了。

# 启动zk集群  
bin/zkServer.sh start

初始化数据库

此处以 MySQL 为例

创建数据库、用户、授权

-- 进入MySQL命令行  
[root@hadoop01]# mysql -u root -p   
Enter password: xxxxxx  
-- 创建 dolphinscheduler 数据库用户和密码,并限定登陆范围  
mysql > CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler';  
-- 创建 dolphinscheduler 的元数据,并指定编码  
mysql > CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;  
-- 为dolphinscheduler数据库授权  
mysql > grant all privileges on dolphinscheduler.* to 'dolphinscheduler'@'%';  
-- 刷新权限  
mysql > flush privileges;

解压缩安装包

# 将apache-dolphinscheduler-3.2.0-bin.tar.gz上传至/opt/targz目录下  
  
# 解压  
[root@hadoop31 targz]# tar zxvf ./apache-dolphinscheduler-3.2.0-bin.tar.gz  
  
# 修改目录权限,使得部署用户对解压缩后的文件有操作权限  
[root@hadoop31 targz]# chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-3.2.0-bin

添加MySQL驱动至libs目录

此处使用 MySQL 8.2.0版本,对应使用 JDBC 驱动为 mysql-connector-j-8.2.0.jar,将该驱动移动至 DolphinScheduler 的每个模块下的 libs 目录下。共5个目录:

  • api-server/libs

  • alert-server/libs

  • master-server/libs

  • worker-server/libs

  • tools/libs

配置文件修改

dolphinscheduler_env.sh 配置

# 修改dolphinscheduler_env.sh  
vim apache-dolphinscheduler-3.2.0-bin/bin/env/dolphinscheduler_env.sh  
  
# 在文末添加以下配置:  
# JAVA_HOME, will use it to start DolphinScheduler server  
# JDK配置  
export JAVA_HOME=${JAVA_HOME:-/opt/soft/jdk8}  
  
# Database related configuration, set database type, username and password  
# MySQL数据库配置  
export DATABASE=${DATABASE:-mysql}  
export SPRING_PROFILES_ACTIVE=${DATABASE}  
export SPRING_DATASOURCE_URL="jdbc:mysql://192.168.17.28:3307/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false"  
export SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME:-"dolphinscheduler"}  
export SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD:-"dolphinscheduler"}  
  
# DolphinScheduler server related configuration  
export SPRING_CACHE_TYPE=${SPRING_CACHE_TYPE:-none}  
export SPRING_JACKSON_TIME_ZONE=${SPRING_JACKSON_TIME_ZONE:-UTC}  
export MASTER_FETCH_COMMAND_NUM=${MASTER_FETCH_COMMAND_NUM:-10}  
  
# Registry center configuration, determines the type and link of the registry center  
# zk注册中心  
export REGISTRY_TYPE=${REGISTRY_TYPE:-zookeeper}  
export REGISTRY_ZOOKEEPER_CONNECT_STRING=${REGISTRY_ZOOKEEPER_CONNECT_STRING:-hadoop31:2181,hadoop32:2181,hadoop33:2181}  
  
# Tasks related configurations, need to change the configuration if you use the related tasks.  
# 其他环境配置(此处只配置了hadoop、hive,其他环境未部署)  
# 如果你不使用某些任务类型,可以忽略不做配置,使用默认即可。比如Flink不使用,不做处理即可  
export HADOOP_HOME=${HADOOP_HOME:-/opt/soft/hadoop-3.3.6}  
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/opt/soft/hadoop-3.3.6/etc/hadoop}  
export SPARK_HOME=${SPARK_HOME:-/opt/soft/spark}  
export PYTHON_LAUNCHER=${PYTHON_LAUNCHER:-/opt/soft/python}  
export HIVE_HOME=${HIVE_HOME:-/opt/soft/hive-3.1.3}  
export FLINK_HOME=${FLINK_HOME:-/opt/soft/flink}  
export DATAX_LAUNCHER=${DATAX_LAUNCHER:-/opt/soft/datax/bin/python3}  
  
export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PYTHON_LAUNCHER:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_LAUNCHER:$PATH

install_env.sh文件修改

# 修改install_env.sh  
vim apache-dolphinscheduler-3.2.0-bin/bin/env/install_env.sh  
  
# 按照集群部署方案,内容如下:  
  
# 集群节点  
ips=${ips:-"hadoop31,hadoop32,hadoop33"}  
  
# ssh免密端口,使用默认  
sshPort=${sshPort:-"22"}  
  
# master节点  
masters=${masters:-"hadoop31,hadoop32"}  
  
# worker节点  
workers=${workers:-"hadoop31:default,hadoop32:default,hadoop33:default"}  
  
# alert节点  
alertServer=${alertServer:-"hadoop33"}  
  
# api节点  
apiServers=${apiServers:-"hadoop31"}  
  
# dolphinscheduler实际安装路径  
installPath=${installPath:-"/opt/soft/dolphinscheduler-3.2.0"}  
  
# 部署dolphinscheduler使用的用户名  
deployUser=${deployUser:-"dolphinscheduler"}  
  
# zk根节点  
zkRoot=${zkRoot:-"/dolphinscheduler"}

初始化元数据

# 切换到apache-dolphinscheduler-3.2.0-bin目录下,执行命令  
[root@hadoop31 apache-dolphinscheduler-3.2.0-bin]# sh ./tools/bin/upgrade-schema.sh  
  
# 此操作,会向MySQL数据库写入元数据,共计65张表,如图所示:

image.png

安装Apache DolphinScheduler

# 执行install.sh部署命令  
[root@hadoop31 apache-dolphinscheduler-3.2.0-bin]# ./bin/install.sh   
  
# 当看到下图时,说明 DS 安装完成

image.png

提示:

安装完成后,此时安装用到的 apache-dolphinscheduler-3.2.0-bin 文件就没用了。

此时,已经将 Apache DolphinScheduler 安装到配置中指定的 /opt/soft/dolphinscheduler-3.2.0 目录下了

登录Apache DolphinScheduler 控制台

访问地址:http://192.168.0.31:12345/dolphinscheduler/ui/

用户名:admin

密码:dolphinscheduler123

image.png

查看监控中心Master/Worker节点信息

1.Master节点

image.png

2.Worker节点

image.png

启动/停止服务命令

第一次安装后,会自动启动所有服务。如有服务问题或者后续需要启停,命令如下。以下脚本都在 DolphinScheduler安装目录的bin下

# 一键停止集群所有服务  
sh /opt/soft/dolphinscheduler-3.2.0/bin/stop-all.sh  
  
# 一键启动集群所有服务  
sh /opt/soft/dolphinscheduler-3.2.0/bin/start-all.sh  
  
# 启/停 master 服务  
sh /opt/soft/dolphinscheduler-3.2.0/bin/dolphinscheduler-daemon.sh start master-server   
sh /opt/soft/dolphinscheduler-3.2.0/bin/dolphinscheduler-daemon.sh stop master-server   
  
# 启/停 worker 服务  
sh /opt/soft/dolphinscheduler-3.2.0/bin/dolphinscheduler-daemon.sh start worker-server   
sh /opt/soft/dolphinscheduler-3.2.0/bin/dolphinscheduler-daemon.sh stop worker-server   
  
# 启/停 api 服务  
sh /opt/soft/dolphinscheduler-3.2.0/bin/dolphinscheduler-daemon.sh start api-server   
sh /opt/soft/dolphinscheduler-3.2.0/bin/dolphinscheduler-daemon.sh stop api-server   
  
# 启/停 alert 服务  
sh /opt/soft/dolphinscheduler-3.2.0/bin/dolphinscheduler-daemon.sh start alert-server   
sh /opt/soft/dolphinscheduler-3.2.0/bin/dolphinscheduler-daemon.sh stop alert-server

本文结束,谢谢!