Spark - 安装部署详细教程2(Standalone模式)
前文介绍了 local 本地模式的部署,但本地模式毕竟只是用来进行练习演示的。真实工作中还是要将应用提交到对应的集群中去执行,本文接下来介绍 Standalone 模式。
(3)我们执行下面命令将下载下来的压缩包解压至指定目录(目录地址可以根据需要自行调整):
(4)当然如果是平时测试学习的话,我们也可以搭建一个伪集群,也就是将 master 节点和 worker 节点都部署在一台服务器上。只需将 Spark 文件夹复制为三个副本并重命名即可,后续步骤都是一样的。
(2)文件内容如下,设置集群对应的 master 节点 IP 地址(即当前服务器地址)和端口(通常都使用 7077):
(3)接着进入 spark 目录中的 sbin 目录,执行 start-master.sh 脚本启动 master 节点服务:
(4)启动后查看日志确认一切都正常:
(6)使用浏览器访问 master 节点的 Spark Web UI 监控页面(端口 8080),可以看到 master 节点正常启动,但目前还没有 worker 节点。



(4)执行完毕后控制台会输出 Pi 的值,同时我们可以发现 10 个任务被分配给两个 executor 执行。
二、Standalone 模式
1,模式介绍
Standalone 模式即为分布式集群模式,它是一种典型的 Master-Worker 架构,其中 Master 负责调度,Worker 负责具体 Task 的执行。
2,准备工作
(1)假设我们要搭建一个“1 个 master + 2 个 worker”的集群环境,首先这三台服务器需要安装 JDK 并配置好 JAVA_HOME 环境,具体步骤可以参考我之前写的文章:
wget https://archive.apache.org/dist/spark/spark-3.4.1/spark-3.4.1-bin-hadoop3.tgz
(3)我们执行下面命令将下载下来的压缩包解压至指定目录(目录地址可以根据需要自行调整):
tar -zxvf spark-3.4.1-bin-hadoop3.tgz -C /usr/local
(4)当然如果是平时测试学习的话,我们也可以搭建一个伪集群,也就是将 master 节点和 worker 节点都部署在一台服务器上。只需将 Spark 文件夹复制为三个副本并重命名即可,后续步骤都是一样的。
tar -xvf spark-3.4.1-bin-hadoop3.tgz cp -r spark-3.4.1-bin-hadoop3 /usr/local/spark-master cp -r spark-3.4.1-bin-hadoop3 /usr/local/spark-worker-1 cp -r spark-3.4.1-bin-hadoop3 /usr/local/spark-worker-2
3,Master 节点配置
(1)进入 Master 节点的 spark 目录中的 conf 目录,创建一个 spark-env.sh 文件:
cd /usr/local/spark-3.4.1-bin-hadoop3/conf/ vi spark-env.sh
(2)文件内容如下,设置集群对应的 master 节点 IP 地址(即当前服务器地址)和端口(通常都使用 7077):
SPARK_MASTER_HOST=192.168.60.8 SPARK_MASTER_PORT=7077
(3)接着进入 spark 目录中的 sbin 目录,执行 start-master.sh 脚本启动 master 节点服务:
cd /usr/local/spark-3.4.1-bin-hadoop3/sbin/ ./start-master.sh
(4)启动后查看日志确认一切都正常:

(5)如果服务器有防火墙的话执行如下命令关闭防火墙:
提示:因为 Spark 的 Driver 和 Executor 之间通讯端口是随机的,Spark 会随选择 1024 ~ 65535(含) 之间的端口,因此在集群节点之间需要关闭防火墙。否则 Executor 上执行任务后无法连接
Driver 会报“Caused by: java.io.IOException: Failed to connect to xxx”错误。
systemctl stop firewalld systemctl disable firewalld

4,Worker 节点配置
(1)登录 Worker 节点服务器,进入 spark 目录中的 sbin 目录,执行 start-worker.sh 脚本启动 worker 节点服务(注意启动参数中的 master 节点端口地址根据实际情况进行修改):
(2)启动后查看日志确认一切都正常:
cd /usr/local/spark-3.4.1-bin-hadoop3/sbin/ ./start-worker.sh spark://192.168.60.8:7077
(2)启动后查看日志确认一切都正常:

(3)使用浏览器访问 master 节点的 Spark Web UI 监控页面(端口 8080),可以看到 worker 节点已经成功添加进来了。如果还有其他的 worker 节点需要加入,重复上面操作即可。

附:提交应用测试
(1)Spark 安装包内已经包含一些示例 Jar 包,位于 examples 目录下。我们可以直接用来测试 spark-submit 功能:

(2)首先我们进入任意节点的 spark 目录:
cd /usr/local/spark-3.4.1-bin-hadoop3
(3)接着执行如下命令提交 spark-examples_2.12-3.4.1.jar 这个应用,并且提交时还需额外指定程序入口类,即 main 函数所在类。这里我使用 SparkPi 类。
参数说明:
- --master spark://192.168.60.8:7077 独立部署模式,连接到 Spark 集群
- 数字 10 表示程序的入口参数,本样例用于设定当前应用的任务数量
./bin/spark-submit \ --master spark://192.168.60.8:7077 \ --class org.apache.spark.examples.SparkPi \ examples/jars/spark-examples_2.12-3.4.1.jar \ 10
(4)执行完毕后控制台会输出 Pi 的值,同时我们可以发现 10 个任务被分配给两个 executor 执行。

(5)访问 Master 资源监控 Web UI 界面,我们也可以看到完成的应用:
