根据官方部署文档和实践过程整理了此部署文档,只是为了不用每次都去翻看官方文档(有时候官网比较慢)。

伪集群部署目的是在单台机器部署 DolphinScheduler 服务,该模式下master、worker、api server 都在同一台机器上。

前置准备

  1. 下载并安装JDK(1.8+),需要配置 JAVA_HOME 环境变量。
  2. 下载(本次安装版本为:dolphinscheduler-3.1.8)。
  3. 安装好MySQL数据库(5.7+),mysql jdbc Driver的版本为8.0.16。
  4. 部署好zookeeper(3.4.6+)。

注意:各个依赖框架的版本一定要满足要求,不然无法成功部署DolphinScheduler

解压安装包

tar -zxvf apache-dolphinscheduler-3.1.8-bin.tar.gz

准备DolphinScheduler 启动环境

配置用户免密及权限

创建部署用户,并且一定要配置 sudo 免密。

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

注意:如果发现 /etc/sudoers 文件中有 "Defaults requirett" 这行,请注释掉。

配置机器SSH免密登陆

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

su dolphinscheduler


ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

注意:配置完后请用ssh登录相应服务器验证是否配置成功。

修改配置文件

完成基础环境的准备后,需要根据你的机器环境修改配置文件。配置文件可以在目录bin/env中找到,他们分别是为install_env.shdolphinscheduler_env.sh

修改 install_env.sh 文件

文件install_env.sh描述了哪些机器将被安装bin/env/install_env.sh中找到此文件,文件详情如下:

# ---------------------------------------------------------# INSTALL MACHINE# ---------------------------------------------------------# Due to the master, worker, and API server being deployed on a single node, the IP of the server is the machine IP or localhost

ips="localhost"

sshPort="22"

masters="localhost"

workers="localhost:default"

alertServer="localhost"

apiServers="localhost"

# DolphinScheduler installation path, it will auto-create if not exists

installPath=~/dolphinscheduler

# Deploy user, use the user you create in section **Configure machine SSH password-free login**

deployUser="dolphinscheduler"

修改dolphinscheduler_env.sh 文件

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

1) DolphinScheduler 的数据库配置。

2) JAVA_HOME配置。

3) zookeeper配置。

如果您不使用某些任务类型,您可以忽略任务外部依赖项。

# JAVA_HOME, will use it to start DolphinScheduler server

export JAVA_HOME=${JAVA_HOME:-/opt/soft/java}


# Database related configuration, set database type, username and password

# for mysql

export DATABASE=${DATABASE:-mysql}

export SPRING_PROFILES_ACTIVE=${DATABASE}

export SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false"

export SPRING_DATASOURCE_USERNAME={user}

export SPRING_DATASOURCE_PASSWORD={password}


# DolphinScheduler server related configuration

export SPRING_CACHE_TYPE=${SPRING_CACHE_TYPE:-none}

export SPRING_JACKSON_TIME_ZONE=${SPRING_JACKSON_TIME_ZONE:-Asia/Shanghai}

export MASTER_FETCH_COMMAND_NUM=${MASTER_FETCH_COMMAND_NUM:-10}


# Registry center configuration, determines the type and link of the registry center

export REGISTRY_TYPE=${REGISTRY_TYPE:-zookeeper}

export REGISTRY_ZOOKEEPER_CONNECT_STRING=${REGISTRY_ZOOKEEPER_CONNECT_STRING:-localhost:2181}


# Tasks related configurations, need to change the configuration if you use the related tasks.

export HADOOP_HOME=${HADOOP_HOME:-/opt/soft/hadoop}

export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/opt/soft/hadoop/etc/hadoop}

export SPARK_HOME1=${SPARK_HOME1:-/opt/soft/spark1}

export SPARK_HOME2=${SPARK_HOME2:-/opt/soft/spark2}

export PYTHON_HOME=${PYTHON_HOME:-/opt/soft/python}

export HIVE_HOME=${HIVE_HOME:-/opt/soft/hive}

export FLINK_HOME=${FLINK_HOME:-/opt/soft/flink}

export DATAX_HOME=${DATAX_HOME:-/opt/soft/datax}


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:$PATH

初始化数据库

DolphinScheduler 元数据存储在关系型数据库中,目前支持 PostgreSQL 和 MySQL。我们的部署用mysql作为元数据库。

  1. 下载mysql-connector-java驱动(8.0.16)并移动到DolphinScheduler的每个模块的libs目录下,其中包括api-server/libs和alert-server/libs和master-server/libs和worker-server/libs和tools/libs。
  2. 创建元数据库对于mysql 5.7:

mysql -uroot -p


mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;


# 修改 {user} 和 {password} 为你希望的用户名和密码

mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';

mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';


mysql> flush privileges;

对于mysql 8:

mysql -uroot -p


mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;


# 修改 {user} 和 {password} 为你希望的用户名和密码

mysql> CREATE USER '{user}'@'%' IDENTIFIED BY '{password}';

mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%';

mysql> CREATE USER '{user}'@'localhost' IDENTIFIED BY '{password}';

mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost';

mysql> FLUSH PRIVILEGES;

  1. 修改./bin/env/dolphinscheduler_env.sh,将username和password改成你在上一步中设置的用户名{user}和密码{password}

# for mysql

export DATABASE=${DATABASE:-mysql}

export SPRING_PROFILES_ACTIVE=${DATABASE}

export SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false"

export SPRING_DATASOURCE_USERNAME={user}

export SPRING_DATASOURCE_PASSWORD={password}

1) 您已经为 DolphinScheduler 创建一个新数据库,现在你可以通过快速的 Shell 脚本来初始化数据库。

bash tools/bin/upgrade-schema.sh

部署DolphinScheduler

使用上面创建的部署用户运行以下命令完成部署。

bash ./bin/install.sh

首次部署完成后会自动启动服务。

Apache DolphinScheduler 伪集群部署_大数据


登录DolphinScheduler

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

Apache DolphinScheduler 伪集群部署_大数据_02


首次登录后的页面

Apache DolphinScheduler 伪集群部署_大数据_03


启停DolphinScheduler服务

一键停止集群所有服务

bash ./bin/stop-all.sh

Apache DolphinScheduler 伪集群部署_大数据_04



一键开启集群所有服务

bash ./bin/start-all.sh

查看集群服务运行状态

Apache DolphinScheduler 伪集群部署_大数据_05


创建租户和普通用户

首先用默认用户名和密码登录系统

  1. 创建一个租户

Apache DolphinScheduler 伪集群部署_dolphinScheduler_06

  1. 创建一个普通用户

Apache DolphinScheduler 伪集群部署_大数据_07


资源中心配置

资源中心可以对接分布式的文件存储系统,如Hadoop(2.6+)或者MinIO集群,也可以对接远端的对象存储,如AWS S3或者阿里云 OSS等。

资源中心也可以直接对接本地文件系统,此部署文档使用的就是本地文件系统。

  1. 配置需要对api-server/conf/common.properties 和 worker-server/conf/common.properties进行配置。配置如下三项内容:
......
# resource storage type: HDFS, S3, NONE
resource.storage.type=HDFS

# resource store on HDFS/S3 path, resource file will store to this base path, self configuration, please make sure the directory exists on hdfs and have read write permissions. "/dolphinscheduler" is recommended
resource.storage.upload.base.path=/dolphinscheduler

......

resource.hdfs.fs.defaultFS=file:///
......

......

# resource storage type: HDFS, S3, NONE

resource.storage.type=HDFS


# resource store on HDFS/S3 path, resource file will store to this base path, self configuration, please make sure the directory exists on hdfs and have read write permissions. "/dolphinscheduler" is recommended

resource.storage.upload.base.path=/dolphinscheduler


......


resource.hdfs.fs.defaultFS=file:///

......

  1. 创建本地目录并修改目录权限

mkdir -p /dolphinscheduler

sudo chown -R dolphinscheduler:dolphinscheduler dolphinscheduler/

注意:修改配置文件后需要重启集群服务。