网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- 数据库: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 版本】
- DS二进制包:下载地址 https://www.apache.org/dyn/closer.lua/dolphinscheduler/3.2.0/apache-dolphinscheduler-3.2.0-bin.tar.gz
- 注意:DolphinScheduler 本身不依赖 Hadoop、Hive、Spark,但如果你运行的任务需要依赖他们,就需要有对应的环境支持。
3.端口说明
组件 | 默认端口 | 说明 |
---|---|---|
MasterServer | 5678 | 非通信端口,只需本机端口不冲突即可 |
WorkerServer | 1234 | 非通信端口,只需本机端口不冲突即可 |
ApiApplicationServer | 12345 | 提供后端通信端口 |
4.DS集群部署
1.时间同步
服务端: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
# 指定日志文件存放目录。
2.配置用户、权限
# 创建用户需使用 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
3.配置集群免密登陆
# 使用创建的 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
4.ZK集群启动
ZK集群安装,参考教程:ZooKeeper集群的安装,本文安装 ZK 版本为 3.8.3。参考教程中是 3.4.14,安装步骤都是一样样儿的,对应着来就可以了。
# 启动zk集群
bin/zkServer.sh start
5.初始化数据库
此处以
MySQL
为例
1.创建数据库、用户、授权
此处可使用
root
用户,推荐单独创建一个用户dolphinscheduler
-- 进入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;
2.解压缩安装包
# 将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
3.添加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
6.配置文件修改
1.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
2.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"}
![img](https://img-blog.csdnimg.cn/img_convert/85544765cb693179173e99a0e770c474.png)
![img](https://img-blog.csdnimg.cn/img_convert/1534cef55b7740d065a8b9245670c935.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
15258025625)]
[外链图片转存中...(img-ZWFeORlg-1715258025625)]
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**