DolphinScheduler 集群模式安装部署

目录

一、安装部署介绍

二、集群部署

2.1 集群部署规划

2.2 前置准备工作 

2.3 准备 DolphinScheduler 启动环境 

2.3.1 配置用户免密及权限(各个节点)

2.3.2 配置机器SSH免密登陆

2.3.3 启动 zookeeper 集群

2.4 初始化数据库

2.4.1 创建数据库、用户和授权  

2.4.2 解压安装包

2.4.3 添加 MySQL 驱动

2.4.4 修改 dolphinscheduler_env.sh 配置文件  

2.4.5 初始化元数据

2.5 修改 install_env.sh 文件

2.6 启动 DolphinScheduler

2.7 登录 DolphinScheduler

2.8 启停服务


 

一、安装部署介绍

软硬件环境建议配置:https://dolphinscheduler.apache.org/zh-cn/docs/3.1.8/about/hardware

DolphinScheduler 提供了 4 种安装部署方式:

  • 单机部署(Standalone):Standalone 仅适用于 DolphinScheduler 的快速体验。如果你是新手,想要体验 DolphinScheduler 的功能,推荐使用[Standalone]方式体检。

  • 伪集群部署(Pseudo-Cluster):伪集群部署目的是在单台机器部署 DolphinScheduler 服务,该模式下master、worker、api server 都在同一台机器上。如果你想体验更完整的功能,或者更大的任务量,推荐使用伪集群部署。

  • 集群部署(Cluster):集群部署目的是在多台机器部署 DolphinScheduler 服务,用于运行大量任务情况。如果你是在生产中使用,推荐使用集群部署或者 kubernetes。

  • Kubernetes 部署:Kubernetes 部署目的是在 Kubernetes 集群中部署 DolphinScheduler 服务,能调度大量任务,可用于在生产中部署。

注意:

  • Standalone 仅建议 20 个以下工作流使用,因为其采用内存式的 H2 Database, Zookeeper Testing Server,任务过多可能导致不稳定,并且如果重启或者停止standalone-server 会导致内存中数据库里的数据清空。 如果您要连接外部数据库,比如 mysql 或者 postgresql。
  • Kubernetes 部署先决条件:Helm3.1.0+ ;Kubernetes1.12+;PV 供应(需要基础设施支持)。

本次是集群部署 DolphinScheduler 3.1.8

二、集群部署

参考官方文档: https://dolphinscheduler.apache.org/zh-cn/docs/3.1.8/guide/installation/pseudo-cluster

2.1 集群部署规划

        集群模式下,可配置多个 Master 及多个 Worker。通常可配置 2~3 个 Master,若干个 Worker。由于集群资源有限,此处配置 2 个 Master,3 个 Worker,集群规划如下。

主机名 ip 服务 备注
hadoop01 192.168.170.136 master、worker JDK、MySQL、zookeeper
hadoop02 192.168.170.137 master、worker JDK、zookeeper
hadoop03 192.168.170.138

 worker

JDK、zookeeper

2.2 前置准备工作 

集群部署 DolphinScheduler 需要有外部软件的支持:

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

2.3 准备 DolphinScheduler 启动环境 

2.3.1 配置用户免密及权限(各个节点)

创建部署用户,并且一定要配置 sudo 免密。以创建 dolphinscheduler 用户为例:

# 创建用户需使用 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

# 修改目录权限,使得部署用户对二进制包解压后的 dolphinscheduler 目录有操作权限
chown -R dolphinscheduler:dolphinscheduler /bigdata/dolphinscheduler

注意:

  • 因为任务执行服务是以 sudo -u {linux-user} 切换不同 linux 用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。初学习者不理解的话,完全可以暂时忽略这一点。
  • 如果发现 /etc/sudoers 文件中有 "Defaults requirett" 这行,也请注释掉。

2.3.2 配置机器SSH免密登陆

        由于安装的时候需要向不同机器发送资源,所以要求各台机器间能实现SSH免密登陆。配置免密登陆的步骤如下:

[root@hadoop01 /bigdata]# su dolphinscheduler
[dolphinscheduler@hadoop01 /root]$ ssh-keygen
[dolphinscheduler@hadoop01 /root]$ ssh-copy-id hadoop01
[dolphinscheduler@hadoop01 /root]$ ssh-copy-id hadoop02
[dolphinscheduler@hadoop01 /root]$ ssh-copy-id hadoop03

注意: 配置完成后,可以通过运行命令 ssh localhost 判断是否成功,如果不需要输入密码就能 ssh 登陆则证明成功

2.3.3 启动 zookeeper 集群

        进入 zookeeper 的安装目录,将 zoo_sample.cfg 配置文件复制到 conf/zoo.cfg,并将 conf/zoo.cfg 中 dataDir 中的值改成 dataDir=./tmp/zookeeper

# 启动 zookeeper
./bin/zkServer.sh start

2.4 初始化数据库

参考官方文档:https://github.com/apache/dolphinscheduler/blob/3.1.8-release/docs/docs/zh/guide/howto/datasource-setting.md

        DolphinScheduler 元数据存储在关系型数据库中,目前支持 PostgreSQL 和 MySQL。下面分别介绍如何使用 MySQL 初始化数据库。  

2.4.1 创建数据库、用户和授权  

-- 进入 MySQL 命令行
[root@hadoop01 ~]# mysql -u root -pqwe123456

-- 创建 dolphinscheduler 的元数据库,并指定编码
mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

-- 创建 dolphinscheduler 的数据库用户和密码,并限定登陆范围
mysql> CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'Qwe123456.';

-- 为 dolphinscheduler 数据库授权
mysql> grant all privileges on dolphinscheduler.* to 'dolphinscheduler'@'%' ;

-- 刷新权限
mysql> flush privileges;

2.4.2 解压安装包

上传 DolphinScheduler 安装包到 hadoop01节点,并解压安装包到该目录。


[root@hadoop01 ~]# tar -zxvf apache-dolphinscheduler-3.1.8-bin.tar.gz -C /bigdata/
[root@hadoop01 ~]# mv /bigdata/apache-dolphinscheduler-3.1.8-bin /bigdata/dolphinscheduler

2.4.3 添加 MySQL 驱动

        需要手动下载 mysql-connector-java 驱动 (8.0.16) 并移动到 DolphinScheduler 的每个模块的 libs 目录下,其中包括 api-server/libs 和 alert-server/libs 和 master-server/libs 和 worker-server/libs。 

# 复制 mysql 的驱动到对应 libs 目录中
[root@hadoop01 ~]# cp mysql-connector-java-8.0.16.jar /bigdata/dolphinscheduler/alert-server/libs/
[root@hadoop01 ~]# cp mysql-connector-java-8.0.16.jar /bigdata/dolphinscheduler/master-server/libs/
[root@hadoop01 ~]# cp mysql-connector-java-8.0.16.jar /bigdata/dolphinscheduler/worker-server/libs/
[root@hadoop01 ~]# cp mysql-connector-java-8.0.16.jar /bigdata/dolphinscheduler/api-server/libs/
[root@hadoop01 ~]# cp mysql-connector-java-8.0.16.jar /bigdata/dolphinscheduler/tools/libs/

2.4.4 修改 dolphinscheduler_env.sh 配置文件  

文件 ./bin/env/dolphinscheduler_env.sh 描述了下列配置:

  • DolphinScheduler 的数据库配置,将 username 和 password 改成你在上一步中设置的用户名和密码

  • 一些任务类型外部依赖路径或库文件,如 JAVA_HOMESPARK_HOME 都是在这里定义的

  • 注册中心 zookeeper

  • 服务端相关配置,比如缓存,时区设置等

        如果您不使用某些任务类型,您可以忽略任务外部依赖项,但您必须根据您的环境更改 JAVA_HOME、注册中心和数据库相关配置。

# 修改内容如下
[root@hadoop01 ~]# vim /bigdata/dolphinscheduler/bin/env/dolphinscheduler_env.sh 

# JAVA_HOME, will use it to start DolphinScheduler server
# 改为自己的 JDK 路径
export JAVA_HOME=${JAVA_HOME:-/usr/java/jdk1.8.0_381}

# 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.170.136:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true"
export SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME:-"dolphinscheduler"}
export SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD:-"Qwe123456."}

# 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
# zookeeper 集群信息
export REGISTRY_TYPE=${REGISTRY_TYPE:-zookeeper}
export REGISTRY_ZOOKEEPER_CONNECT_STRING=${REGISTRY_ZOOKEEPER_CONNECT_STRING:-hadoop01:2181,hadoop02:2181,hadoop03:2181}

# Tasks related configurations, need to change the configuration if you use the related tasks.
# 对已有可以正常配置,没有的保持默认即可
export HADOOP_HOME=${HADOOP_HOME:-/bigdata/hadoop/server/hadoop-3.2.4}
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop}
export SPARK_HOME1=${SPARK_HOME1:-/bigdata/spark-3.2.4}
export SPARK_HOME2=${SPARK_HOME2:-/bigdata/spark-3.2.4}
export PYTHON_HOME=${PYTHON_HOME:-/usr/local/anaconda3/bin/python}
export HIVE_HOME=${HIVE_HOME:-/bigdata/apache-hive-3.1.2}
export FLINK_HOME=${FLINK_HOME:-/bigdata/flink}
export DATAX_HOME=${DATAX_HOME:-/bigdata/datax}
export SEATUNNEL_HOME=${SEATUNNEL_HOME:-/bigdata/seatunnel}
export CHUNJUN_HOME=${CHUNJUN_HOME:-/bigdata/chunjun}

export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME/bin:$SEATUNNEL_HOME/bin:$CHUNJUN_HOME/bin:$PATH

2.4.5 初始化元数据

# 切换到 dolphinscheduler 目录下,执行命令
[root@hadoop01 ~]# cd /bigdata/dolphinscheduler/
[root@hadoop01 /bigdata/dolphinscheduler]# bash tools/bin/upgrade-schema.sh 

2.5 修改 install_env.sh 文件

        完成基础环境的准备后,需要根据你的机器环境修改配置文件。配置文件可以在目录 bin/env 中找到,他们分别是 并命名为 install_env.sh 和 dolphinscheduler_env.sh。文件 install_env.sh 描述了哪些机器将被安装 DolphinScheduler 以及每台机器对应安装哪些服务。您可以在路径 bin/env/install_env.sh 中找到此文件,可通过以下方式更改env变量,export <ENV_NAME>=,配置详情如下。

[root@hadoop01 ~]# vim /bigdata/dolphinscheduler/bin/env/install_env.sh 
# 所有组件涉及的机器
ips=${ips:-"192.168.170.136,192.168.170.137,192.168.170.138"}

# ssh 连接的端口
sshPort=${sshPort:-"22"}

# master 节点
masters=${masters:-"192.168.170.136,192.168.170.137"}

# 工作节点
workers=${workers:-"192.168.170.136:default,192.168.170.137:default,192.168.170.138:default"}

# 部署报警服务的机器
alertServer=${alertServer:-"192.168.170.138"}

# 部署前端 API 接口的服务器
apiServers=${apiServers:-"192.168.170.136"}

# 安装路径
installPath=${installPath:-"/bigdata/dolphinscheduler-3.1.8"}

# 使用的用户
deployUser=${deployUser:-"root"}

# 在 zookeeper 中使用的名称空间
zkRoot=${zkRoot:-"/dolphinscheduler"}

2.6 启动 DolphinScheduler

使用上面创建的部署用户运行以下命令完成部署,部署后的运行日志将存放在 logs 文件夹内

[root@hadoop01 ~]# cd /bigdata/dolphinscheduler/
[root@hadoop01 /bigdata/dolphinscheduler]# bash ./bin/install.sh

注意: 第一次部署的话,可能出现 5 次 sh: bin/dolphinscheduler-daemon.sh: No such file or directory 相关信息,此为非重要信息直接忽略即可。

2.7 登录 DolphinScheduler

        浏览器访问地址 http://localhost:12345/dolphinscheduler/ui 即可登录系统UI。默认的用户名和密码是 admin/dolphinscheduler123

在监控中心即可查看各个组件的状态:

2.8 启停服务

        第一次安装后会自动启动所有服务的,如有服务问题或者后续需要启停,命令如下。下面的操作脚本都在 dolphinScheduler 安装目录 bin 下(/bigdata/dolphinscheduler-3.1.8/)。

# 一键停止集群所有服务
bash ./bin/stop-all.sh

# 一键开启集群所有服务
bash ./bin/start-all.sh

# 启停 Master
bash ./bin/dolphinscheduler-daemon.sh stop master-server
bash ./bin/dolphinscheduler-daemon.sh start master-server

# 启停 Worker
bash ./bin/dolphinscheduler-daemon.sh start worker-server
bash ./bin/dolphinscheduler-daemon.sh stop worker-server

# 启停 Api
bash ./bin/dolphinscheduler-daemon.sh start api-server
bash ./bin/dolphinscheduler-daemon.sh stop api-server

# 启停 Alert
bash ./bin/dolphinscheduler-daemon.sh start alert-server
bash ./bin/dolphinscheduler-daemon.sh stop alert-server

注意 1 : 每个服务在路径 <service>/conf/dolphinscheduler_env.sh 中都有 dolphinscheduler_env.sh 文件,这是可以为微 服务需求提供便利。意味着您可以基于不同的环境变量来启动各个服务,只需要在对应服务中配置 <service>/conf/dolphinscheduler_env.sh 然后通过 <service>/bin/start.sh 命令启动即可。但是如果您使用命令 /bin/dolphinscheduler-daemon.sh start <service> 启动服务器,它将会用文件 bin/env/dolphinscheduler_env.sh 覆盖 <service>/conf/dolphinscheduler_env.sh 然后启动服务,目的是为了减少用户修改配置的成本.

注意 2 :服务用途请具体参见《系统架构设计》小节。Python gateway service 默认与 api-server 一起启动,如果您不想启动 Python gateway service 请通过更改 api-server 配置文件 api-server/conf/application.yaml 中的 python-gateway.enabled : false 来禁用它。

上一篇文章:DolphinScheduler 介绍及系统架构-CSDN博客 

相关推荐

  1. 海豚调度 Dolphinscheduler-3.2.0 离线部署模式

    2023-12-30 00:42:03       68 阅读
  2. DolphinScheduler3.2.1 伪部署[二]

    2023-12-30 00:42:03       16 阅读
  3. dolphinscheduler独立部署文档(海豚调度)

    2023-12-30 00:42:03       9 阅读
  4. Presto安装部署

    2023-12-30 00:42:03       45 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-30 00:42:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-30 00:42:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-30 00:42:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-30 00:42:03       20 阅读

热门阅读

  1. 计算机网络-期末不挂科-第一章-概述

    2023-12-30 00:42:03       38 阅读
  2. Video面试题

    2023-12-30 00:42:03       35 阅读
  3. Vue.js项目部署至Linux服务器的详细步骤

    2023-12-30 00:42:03       37 阅读
  4. git回退2个错误的分支

    2023-12-30 00:42:03       31 阅读
  5. Docker六 | Docker Compose容器编排

    2023-12-30 00:42:03       28 阅读
  6. 安装 yarn、pnpm、功能比较

    2023-12-30 00:42:03       42 阅读
  7. Python开发雷点总结

    2023-12-30 00:42:03       37 阅读
  8. Ascend C算子开发常见问题案例

    2023-12-30 00:42:03       35 阅读
  9. C语言,指针链表详解解说及代码示例

    2023-12-30 00:42:03       41 阅读
  10. 面试题:BIO、NIO、AIO 的区别是什么?

    2023-12-30 00:42:03       43 阅读
  11. Top100 C++编程面试问题

    2023-12-30 00:42:03       31 阅读