spark+hive-分布式-大数据项目篇 4-伪分式模式 DolphinScheduler

0 阅读5分钟

DolphinScheduler 3.2.2 在 Ubuntu 20.04 上的伪分布式(单机)安装文档

(适配 Ubuntu20.04 + Spark3.4.4 + Hive3.1.3 + MySQL8.0.42)

伪分布式 = 单机部署所有服务(Master/Worker/Api/Alert),生产/学习通用,最稳定、最简单


一、伪分布式说明(非常重要)

  • 伪分布式 = 1台机器运行全部服务(Master + Worker + Api + Alert)
  • 不使用 standalone-server(那个是开发测试用,不稳定)
  • 所有配置文件统一修改
  • 所有服务在同一台机器启动
  • 完全兼容 Hadoop、Spark、Hive 伪分布式环境

二、前置条件(你已满足)

  • JDK 1.8 ✅
  • MySQL 8.0.42 ✅
  • Hadoop 3.3.4(伪分布式)✅
  • Spark 3.4.4 ✅
  • Hive 3.1.3 ✅
  • Ubuntu 20.04 ✅
  • 内存 ≥4G(推荐8G)✅

三、安装

第一步:基础依赖安装

sudo apt update
sudo apt install -y sshpass net-tools

第二步:解压 DolphinScheduler 并赋权

# 解压
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

# 软连接(方便使用)
ln -s /usr/local/apache-dolphinscheduler-3.2.2-bin /home/db2305070135/dolphinscheduler

四、MySQL 驱动配置

# 解压驱动
unzip /home/db2305070135/mysql-connector-j-8.0.33.zip -d /home/db2305070135/

# 复制到所有需要的目录(伪分布式必须全复制)
cp /home/db2305070135/mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar ~/dolphinscheduler/libs/
cp /home/db2305070135/mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar ~/dolphinscheduler/api-server/libs/
cp /home/db2305070135/mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar ~/dolphinscheduler/master-server/libs/
cp /home/db2305070135/mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar ~/dolphinscheduler/worker-server/libs/
cp /home/db2305070135/mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar ~/dolphinscheduler/alert-server/libs/
cp /home/db2305070135/mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar ~/dolphinscheduler/tools/libs/

# 删除旧驱动
rm -f ~/dolphinscheduler/libs/mysql-connector-java-5*

五、创建 MySQL 数据库

mysql -uroot -p

#执行:

CREATE DATABASE IF NOT EXISTS dolphinscheduler DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON dolphinscheduler.* TO 'root'@'localhost';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
EXIT;

六、伪分布式核心配置(必须全部改完)

#下面 5 个配置文件 全部统一修改,伪分布式标准配置。

1. 环境变量 env.sh

nano ~/dolphinscheduler/bin/env/dolphinscheduler_env.sh

替换成下面内容(路径完全匹配你的环境):

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

export HADOOP_HOME=/usr/local/hadoop-3.3.4
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export HIVE_HOME=/usr/local/apache-hive-3.1.3-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf

export SPARK_HOME=/usr/local/spark-3.4.4-bin-hadoop3
export SPARK_CONF_DIR=$SPARK_HOME/conf

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$SPARK_HOME/bin:$PATH

2. 修改 4 个模块的数据库连接(全部一样)

你需要修改这 4 个文件:

  • master-server/conf/application.yaml
  • worker-server/conf/application.yaml
  • api-server/conf/application.yaml
  • alert-server/conf/application.yaml

#修改内容

1.  master-server/conf/application.yaml
 1 
spring:
  profiles:
    active: postgresql
改成
spring:
  profiles:
    active: mysql
 2 处(文件最下面)
password: root
改成
password: 123456
---
2.  api-server/conf/application.yaml
 1 
spring:
  profiles:
    active: postgresql
改成
spring:
  profiles:
    active: mysql
 2 处(最下面)
password: root
改成
password: 123456
---
3.  alert-server/conf/application.yaml
 1 
spring:
  profiles:
    active: postgresql
改成
spring:
  profiles:
    active: mysql
 2 处(最下面)
password: root
改成
password: 123456
---
4.  worker-server/conf/application.yaml
 1 处:删除这一行
exclude:
  - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
 2 处:在下面添加 MySQL 配置
加到这里:
spring:
  banner:
    charset: UTF-8
  jackson:
    time-zone: UTC
    date-format: "yyyy-MM-dd HH:mm:ss"
  # 在这里加下面的 datasource 配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
    username: root
    password: 123456
5.  `tools/conf/application.yaml`【tools 模块数据库配置(初始化用)】
 1 处:把默认启用的 postgresql 改成 mysql
找到:
spring:
  main:
    banner-mode: off
  datasource:
    driver-class-name: org.postgresql.Driver
    url: jdbc:postgresql://127.0.0.1:5432/dolphinscheduler
    username: root
    password: root
**直接替换成:**
spring:
  main:
    banner-mode: off
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
    username: root
    password: 123456
 2 处:下面 mysql 段密码也改成 123456
找到:
password: root
改成:
password: 123456

七、初始化元数据(最关键)


### 初始化
# 进入tools根目录
cd /usr/local/apache-dolphinscheduler-3.2.2-bin/tools

# 解决「权限不够」的问题
chmod +x bin/upgrade-schema.sh


# 2. 用相对路径调用bin目录下的脚本
DATABASE=mysql ./bin/upgrade-schema.sh


✅ 成功标志:

Schema upgrade completed successfully

八、伪分布式启动所有服务

### 启动命令(按顺序)
cd ~/dolphinscheduler/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

#停止命令
cd ~/dolphinscheduler/bin

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

九、验证启动成功

jps

#必须出现 4 个进程:

  • MasterServer
  • WorkerServer
  • ApiApplicationServer
  • AlertServer

✅ 出现即成功!


十、Web UI 访问

查看虚拟机IP:

hostname -I

十一、伪分布式必做配置(任务能跑才完整)

#12.1 创建租户

安全中心 → 租户管理 → 创建租户

-   租户名称:`db2305070135`(Linux 当前用户)
-   队列:`default`
-   保存

#12.2 启动 Hive Metastore(必须后台运行)

nohup hive --service metastore > /dev/null 2>&1 &

#12.3 配置 Hive 数据源

数据中心 → 数据源 → 创建 → HIVE

-   名称:hive3
-   地址:thrift://[localhost:9083](http://localhost:9083)
-   数据库:default
-   测试连接 → 成功 → 保存


十二、日志查看(排查错误用)

# Master
tail -f ~/dolphinscheduler/master-server/logs/*.log

# Worker
tail -f ~/dolphinscheduler/worker-server/logs/*.log

# Api
tail -f ~/dolphinscheduler/api-server/logs/*.log

十三、常见问题

1. ❌启动后立刻崩溃退出(ZooKeeper 连接超时)

image.png

# 查看日志
tail -f /usr/local/apache-dolphinscheduler-3.2.2-bin/api-server/logs/*.log

# 验证 ZK 是否启动成功
zkServer.sh status
# 验证 ZK 端口监听
sudo netstat -tlnp | grep 2181

# 清理 ZK 数据目录(解决 ZooKeeper 假死)
rm -rf /usr/local/apache-zookeeper-3.8.0-bin/data/*

# 独立安装的 ZooKeeper,用对应命令启动
zkServer.sh start

2.❌网页访问不了(防火墙拦截了 12345 端口)

image.png image.png

# 检查1234端口是否被占用
sudo netstat -tlnp | grep 1234

# 放行 12345 端口
sudo ufw allow 12345/tcp
sudo ufw reload

# 验证端口是否放行 
sudo ufw status

# 重启所有DolphinScheduler服务,再尝试