spark+hive-分布式-大数据项目篇 4-任务调度平台DolphinScheduler

0 阅读6分钟

DolphinScheduler 3.2.2 详细安装配置文档(适配 Ubuntu20.04 + Spark3.4.4 + Hive3.1.3 + MySQL8.0.42)

DolphinScheduler 相比 Airflow 更适配大数据场景(原生支持Spark/Hive/YARN),无需额外适配大数据组件

本文档基于已下载的 apache-dolphinscheduler-3.2.2-bin.tar.gz 安装包,完整覆盖环境准备、安装部署、核心配置、服务启动、Web UI 验证全流程,可直接用于生产级部署。


一、前置环境检查

1.1 基础环境要求

组件版本要求你的环境状态
JDK1.8.x(必须,无需重复安装)✅ 已安装JDK8,跳过重装1.8.x(必须)✅ 已安装 JDK8
MySQL8.0.x✅ 已安装 MySQL8.0.42
Hadoop3.x✅ 已安装 Hadoop3.3.4
Spark3.x✅ 已安装 Spark3.4.4
Hive3.x✅ 已安装 Hive3.1.3
系统Ubuntu20.04✅ 已满足
内存≥4G(推荐8G)建议虚拟机分配≥4G内存

1.2 仅安装必需依赖(避坑说明)

已提前安装JDK8,无需重复安装;其余依赖(libmysqlclient-dev、build-essential等)对单机部署非必需,只需要安装sshpass和net-tools即可,避免冗余操作和环境冲突。

# 仅安装必需依赖:sshpass(DS节点通信必备,其余依赖已满足)
sudo apt update && sudo apt install -y sshpass
# 再安装`netstat
sudo apt update && sudo apt install -y net-tools

1.3 DolphinScheduler安装解压

#确认安装包位置 #假如已下载安装包到 /home/db2305070135/ 目录:

# 直接解压到/usr/local/(无需先移动安装包,一步到位) 
sudo tar -zxvf /home/db2305070135/apache-dolphinscheduler-3.2.2-bin.tar.gz -C /usr/local/ 

# 修改权限(避免后续操作权限不足)
sudo chown -R db2305070135:db2305070135 /usr/local/apache-dolphinscheduler-3.2.2-bin

# 给用户db2305070135 建立软连接
ln -s /usr/local/apache-dolphinscheduler-3.2.2-bin /home/db2305070135/dolphinscheduler-3.2.2

输出存在即确认成功。

1.4 目录结构说明

解压后目录结构如下:


/usr/local/apache-dolphinscheduler-3.2.2-bin/
├── bin/
│   └── env/
│       ├── dolphinscheduler_env.sh   # 环境变量配置(核心)
│       ├── install_env.sh            # 安装环境配置
│       └── ...
├── alert-server/
│   └── conf/                        # 告警模块配置
├── api-server/
│   └── conf/                        # API模块配置
├── master-server/
│   └── conf/                        # Master模块配置
└── worker-server/
    └── conf/                        # Worker模块配置

二、MySQL 元数据配置(核心)

2.1 准备 MySQL 8.0 驱动

已下载 mysql-connector-j-8.0.33.zip,直接拷贝驱动到 DolphinScheduler:

# 解压驱动包【之前如果已解压过,则不用再解压,直接取里面的驱动文件jar即可】
unzip /home/db2305070135/mysql-connector-j-8.0.33.zip -d /home/db2305070135/

# 复制驱动 jar 到 DolphinScheduler libs 目录
cp /home/db2305070135/mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar /usr/local/apache-dolphinscheduler-3.2.2-bin/libs

# 删除可能存在的旧版驱动(避免冲突)
rm -f /usr/local/apache-dolphinscheduler-3.2.2-bin/libs/mysql-connector-java-5.1.*.jar

2.2 创建 DolphinScheduler 数据库

# 登录 MySQL(输入你的 MySQL 密码)
mysql -uroot -p

# 执行以下 SQL 创建数据库
CREATE DATABASE IF NOT EXISTS dolphinscheduler 
DEFAULT CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

# 授权(确保本地可访问)
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'root'@'localhost';
FLUSH PRIVILEGES;
EXIT;

2.3 修改数据库连接配置

  1. 【所有模块(master/api/alert)的 application.yaml 都要做同样的 3 处修改,保持配置一致】
  2. 【worker的,另外改】
  3. 【tools的,另外改】
master-server	✅ 必须改	主节点,必须连接 MySQL
worker-server	✅ 必须改	任务执行节点,必须连接 MySQL
api-server	✅ 必须改	API 网关,必须连接 MySQL
alert-server	✅ 必须改	告警服务,必须连接 MySQL
standalone-server	❌ 不要改	这是单机模式模板,不用动

2.4❌【初始化时,报错:Invalid profile [] 】

### 初始化
跳过所有 Profile 解析的命令,强制指定 MySQL 参数执行初始化:
# 进入tools根目录
cd /usr/local/apache-dolphinscheduler-3.2.2-bin/tools

# 复制MySQL驱动到libs(必做)
cp /home/db2305070135/mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar ./libs/

# 强制指定MySQL参数执行初始化(核心命令)

java -cp "libs/*" \
-Dspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver \
-Dspring.datasource.url=jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true \
-Dspring.datasource.username=root \
-Dspring.datasource.password=123456 \
org.apache.dolphinscheduler.tools.datasource.SchemaUpgradeTool
# 2. 用相对路径调用bin目录下的脚本
bin/upgrade-schema.sh

成功标志:终端无报错,最后输出 Schema upgrade completed successfully


三、环境变量与组件适配配置

3.1 配置 DolphinScheduler 环境变量

# 编辑环境变量脚本
nano /usr/local/apache-dolphinscheduler-3.2.2-bin/bin/env/dolphinscheduler_env.sh

替换为以下内容(适配你的组件路径):

#!/bin/bash
# JDK 8 配置
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

# Hadoop 配置
export HADOOP_HOME=/usr/local/hadoop-3.3.4
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

# Hive 配置
export HIVE_HOME=/usr/local/apache-hive-3.1.3-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export PATH=$HIVE_HOME/bin:$PATH

# Spark 配置
export SPARK_HOME=/usr/local/spark-3.4.4-bin-hadoop3
export SPARK_CONF_DIR=$SPARK_HOME/conf
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH

# 追加到系统 PATH
export PATH=$DOLPHINSCHEDULER_HOME/bin:$PATH

3.2 赋予脚本执行权限

chmod +x /usr/local/apache-dolphinscheduler-3.2.2-bin/bin/*
chmod +x /usr/local/apache-dolphinscheduler-3.2.2-bin/bin/env/*.sh

四、启动 DolphinScheduler 服务

# 进入启动脚本目录
cd /usr/local/apache-dolphinscheduler-3.2.2-bin/bin

# 逐个启动
./dolphinscheduler-daemon.sh start master-server
./dolphinscheduler-daemon.sh start worker-server
./dolphinscheduler-daemon.sh start api-server
./dolphinscheduler-daemon.sh start alert-server

./dolphinscheduler-daemon.sh start standalone-server

# 逐个关闭
# 1. 关闭 Standalone 主服务(如果之前启动过)
./dolphinscheduler-daemon.sh stop standalone-server

./dolphinscheduler-daemon.sh stop master-server
./dolphinscheduler-daemon.sh stop worker-server
./dolphinscheduler-daemon.sh stop api-server
./dolphinscheduler-daemon.sh stop alert-server

4.1 验证服务启动

# 查看 Java 进程
jps | grep -E 'MasterServer|WorkerServer|ApiApplicationServer|AlertServer'

成功标志:输出包含以下 5 个进程:

  • MasterServer
  • WorkerServer
  • ApiApplicationServer
  • AlertServer
  • standaloneserver

4.2 查看日志(排查问题用)

# 查看 Master 日志
tail -f /usr/local/apache-dolphinscheduler-3.2.2-bin/standalone-server/logs/dolphinscheduler-master.log

# 查看 Worker 日志
tail -f /usr/local/apache-dolphinscheduler-3.2.2-bin/standalone-serverstandalone-server/logs/dolphinscheduler-worker.log

4.3 服务启动时卡死(先前开了hadoop、hive服务,导致内存不够)

image.png

# 先关闭虚拟机
# 将原本4G内存设为8G内存,再启动虚拟机去操作

五、Web UI 访问与初始配置

5.1 访问地址

5.2 首次登录后配置

5.2.1 创建租户(关联 Linux 用户)
  1. 登录 → 安全中心 → 租户管理 → 创建租户

    1. 租户名称:db2305070135(你的 Linux 用户名)
    2. 队列名称:default(YARN 默认队列)
    3. 描述:ETL 调度租户
  2. 点击保存。

5.2.2 配置 Hive 数据源

【虚拟机里Hive Metastore 服务必须先启动】 hive --service metastore 或者后台启动(推荐,不占终端): nohup hive --service metastore &

  1. 数据中心 → 资源管理

    1. 数据源类型:HIVE
    2. 数据源名称:hive_3.1.3
    3. Hive 地址:thrift://localhost:9083(Hive Metastore 地址)
    4. IP / 主机名:填写 localhost
    5. 端口:填写 9083
    6. 数据库名称:填写 default(Hive 默认数据库)
    7. 用户名 / 密码:留空(测试环境一般不需要)
  2. 点击「测试连接」,提示「连接成功」后保存。

5.2.3 配置 Spark 任务模板
  1. 项目管理 → 任务模板 → 新建模板

    1. 模板名称:spark_etl_template
    2. 任务类型:SPARK
    3. Spark 主节点:yarn(或 local[2] 用于测试)
    4. 部署模式:client
    5. 资源配置:--executor-memory 2G --executor-cores 1 --num-executors 2
  2. 保存模板,后续创建 ETL 任务可直接复用。


六、常见问题排查

问题1:MySQL 连接失败

  • 现象upgrade-schema.sh 报错 Access denied for user 'root'@'localhost'

  • 解决

    • 确认 application.yaml 中 MySQL 密码正确

    • 执行 MySQL 命令修改认证方式:

      1.  ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
         FLUSH PRIVILEGES;
        

问题2:WorkerServer 启动失败

  • 现象jpsWorkerServer 进程

  • 解决

    • 查看 Worker 日志:tail -f logs/dolphinscheduler-worker.log
    • 检查端口占用:netstat -tulpn | grep 8888(默认 Worker 端口 8888)
    • 修改 conf/application.yamldolphinscheduler.worker.port 为未占用端口

问题3:Spark 任务执行失败

  • 现象:任务日志提示 spark-submit: command not found

  • 解决

    • 确认 dolphinscheduler_env.shSPARK_HOME 配置正确
    • 重启 Worker 服务:./dolphinscheduler-daemon.sh restart worker

七、生产环境优化建议

  1. 开机自启:将 start-all.sh 加入 systemd 服务,实现服务器重启后自动启动 DolphinScheduler。

  2. 资源隔离:为不同业务创建独立租户和 YARN 队列,避免资源争抢。

  3. 告警配置:在 Web UI → 告警中心配置邮件/钉钉告警,监控任务失败和资源过载。

  4. 日志持久化:修改 conf/logback.xml,将日志存储到 HDFS,避免本地磁盘占满。

  5. 创建第一个 Spark ETL 工作流(ODS→DWD→DWS→ADS)

  6. 配置定时调度(如每天凌晨1点执行)

  7. 测试数据从 HDFS → Hive → Spark 的全链路流转