当前位置: > > > Spark - 安装部署详细教程2(Standalone模式)

Spark - 安装部署详细教程2(Standalone模式)

    前文介绍了 local 本地模式的部署,但本地模式毕竟只是用来进行练习演示的。真实工作中还是要将应用提交到对应的集群中去执行,本文接下来介绍 Standalone 模式。

二、Standalone 模式

1,模式介绍

    Standalone 模式即为分布式集群模式,它是一种典型的 Master-Worker 架构,其中 Master 负责调度,Worker 负责具体 Task 的执行。

2,准备工作

(1)假设我们要搭建一个“1 个 master +  2 个 worker”的集群环境,首先这三台服务器需要安装 JDK 并配置好 JAVA_HOME 环境,具体步骤可以参考我之前写的文章:

(2)接着访问 Apache Spark 官方下载页面(点击访问),选择合适的版本下载。这里我下载的是 3.4.1 版本(三台服务器都要下载):
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)如果服务器有防火墙的话执行如下命令关闭防火墙:
提示:因为 SparkDriverExecutor 之间通讯端口是随机的,Spark 会随选择 1024 65535(含) 之间的端口,因此在集群节点之间需要关闭防火墙。否则 Executor 上执行任务后无法连接 Driver 会报“Caused by: java.io.IOException: Failed to connect to xxx”错误。
systemctl stop firewalld
systemctl disable firewalld

(6)使用浏览器访问 master 节点的 Spark Web UI 监控页面(端口 8080),可以看到 master 节点正常启动,但目前还没有 worker 节点。

4,Worker 节点配置

(1)登录 Worker 节点服务器,进入 spark 目录中的 sbin 目录,执行 start-worker.sh 脚本启动 worker 节点服务(注意启动参数中的 master 节点端口地址根据实际情况进行修改):
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 界面,我们也可以看到完成的应用:
评论0