集群部署方案(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张表,如图所示:

安装Apache DolphinScheduler

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

提示:

安装完成后,此时安装用到的 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

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

1.Master节点

2.Worker节点

启动/停止服务命令

第一次安装后,会自动启动所有服务。如有服务问题或者后续需要启停,命令如下。以下脚本都在 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

本文结束,谢谢!

本文由 白鲸开源 提供发布支持!

Apache DolphinScheduler-3.2.0集群部署教程的更多相关文章

  1. redis3.0集群部署和测试

    redis3.0集群部署和测试 环境介绍 两台Centos7的虚拟机模拟6个节点,A台3个master节点,B台3个slave节点A地址:172.16.81.140B地址:172.16.81.141r ...

  2. Hadoop 2.6.0 集群部署

    Hadoop的集群部署和单节点部署类似,配置文件不同,另外需要修改网络方面的配置 首先,准备3台虚拟机,系统为CentOS 6.6,其中一台为namenode 剩余两台为 datanode: 修改主机 ...

  3. Redis 3.0.0 集群部署

    简述: 1.0.1:redis cluster的现状 目前redis支持的cluster特性 1):节点自动发现 2):slave->master 选举,集群容错 3):Hot reshardi ...

  4. hadoop 2.2.0 集群部署 坑

    注意fs.defaultFS为2..0新的变量,代替旧的:fs.default.name hadoop 2.2.0 集群启动命令:bin/hdfs namenode -formatsbin/start ...

  5. k8s-1.15.0集群部署+dashboard

    环境:外网环境硬件master-centos7.4  2核4G node1-centos7.4     2核4Gnode2-centos7.4     2核4G软件:三台服务器 :docker-19. ...

  6. Kubernetes 1.26.0 集群部署Prometheus监控

    前言 该存储库收集 Kubernetes 清单.Grafana仪表板和Prometheus 规则,结合文档和脚本,使用Prometheus Operator提供易于操作的端到端 Kubernetes ...

  7. Hadoop-2.2.0集群部署时live nodes数目不对的问题

    关于防火墙,hadoop本身配置都确定没任何问题,集群启动不报错,但打开50070页面,始终live nodes数目不对,于是我尝试/etc/hosts文件配置是否存在逻辑的错误: 127.0.0.1 ...

  8. zeebe 0.20.0 集群部署试用

    zeebe 0.20.0 是生产可用的第一个版本,同时也有好多变动,以下是一个简单集群的运行以及一个简单 的运行说明 环境准备 docker-compose 文件   version: "3 ...

  9. hadoop2.20.0集群安装教程

    一.安装的需要软件及集群描述 1.软件: Vmware9.0:虚拟机 Hadoop2.2.0:Apache官网原版稳定版本 JDK1.7.0_07:Oracle官网版本 Ubuntu12.04LTS: ...

  10. docker环境下solrcloud+zookeeper集群部署教程

    前言:两个月前的16年11月份完成的配置,使用的solr6.1和zookeeper3.4,刚刚写成blog,目前版本可能有小版本的变化. 本例完成结果为:在docker环境下部署solrcloud集群 ...

随机推荐

  1. APOLLO DEV环境列表无法显示解决,重启对应的Apollo服务

    APOLLO DEV环境列表无法显示解决,重启对应的Apollo服务 找到项目中的apollo-core jar包中的配置文件,查看dev.meta的服务器配置IP:端口 apollo-env.pro ...

  2. 如何使用 Dump 文件?

    引言 本文概述了使用 WinDbg 的一些必要步骤. 准备工作 第一步,你必须更改系统的配置使其能够生成 PDB 文件,包括 Release 版本.近期的 Visual C++ 编译器默认启用此配置, ...

  3. 详解Web应用安全系列(1)注入漏洞之SQL注入

    注入漏洞通常是指在可输入参数的地方,通过构造恶意代码,进而威胁应用安全和数据库安全.常见的注入漏洞包括:SQL注入和XSS跨站脚本攻击. 这篇文章我们主要讲SQL注入,SQL注入即是指web应用程序对 ...

  4. 容器镜像安全:安全漏洞扫描神器Trivy

    目录 一.系统环境 二.前言 三.Trivy简介 四.Trivy漏洞扫描原理 五.利用trivy检测容器镜像的安全性 六.总结 一.系统环境 本文主要基于Docker version 20.10.14 ...

  5. Jenkins从github拉取项目,github有更新,自动进行构建,实现自动集成

    使用git之前的准备工作 1. 搭建Jenkins的机器上,有安装git,配置git的安装地址,Jenkins配置Git的安装地址 2. Global Tool Configuration - > ...

  6. spring使用jdk17运行出现编码问题

    遇到一个比较奇怪的问题. 这个问题别人也遇到过. https://blog.csdn.net/gao_chuan_g/article/details/115117712 一.情况简介 使用jdk17+ ...

  7. FPGA对EEPROM驱动控制(I2C协议)

    本文摘要:本文首先对I2C协议的通信模式和AT24C16-EEPROM芯片时序控制进行分析和理解,设计了一个i2c通信方案.人为按下写操作按键后,FPGA(Altera EP4CE10)对EEPROM ...

  8. Hugging Face Accelerate 两个后端的故事:FSDP 与 DeepSpeed

    社区中有两个流行的 零冗余优化器(Zero Redundancy Optimizer,ZeRO) 算法实现,一个来自 DeepSpeed,另一个来自 PyTorch.Hugging Face Acce ...

  9. QT学习:06 常用的全局变量与宏定义

    --- title: framework-cpp-qt-06-常用的全局变量与宏定义 EntryName: framework-cpp-qt-06-global date: 2020-04-10 11 ...

  10. Nuxt3 的生命周期和钩子函数(七)

    title: Nuxt3 的生命周期和钩子函数(七) date: 2024/6/30 updated: 2024/6/30 author: cmdragon excerpt: 摘要:文章阐述了Nuxt ...