Spark - 安装部署详细教程2(Standalone模式)
作者:hangge | 2023-09-08 08:40
前文介绍了 local 本地模式的部署,但本地模式毕竟只是用来进行练习演示的。真实工作中还是要将应用提交到对应的集群中去执行,本文接下来介绍 Standalone 模式。
(4)为方便后续服务器间相互访问,我们在三台服务上均执行如下命令编辑的 host 文件:
二、Standalone 模式
1,模式介绍
Standalone 模式即为分布式集群模式,它是一种典型的 Master-Worker 架构,其中 Master 负责调度,Worker 负责具体 Task 的执行。
2,准备工作
(1)假设我们要搭建一个一主两从的集群环境,那么我们需要准备三台 linux 服务器,其中node1为主节点,另外两个为从节点,具体信息如下:
主机名 | 内网IP | 外网IP |
node1 | 172.31.4.99 | 47.251.124.163 |
node2 | 172.31.3.72 | 47.251.121.21 |
node3 | 172.31.6.103 | 47.251.124.36 |
vi /etc/hosts
(5)然后在里面添加三台服务器的主机名和对应的 IP 地址,使得它们可以通过主机名相互访问:
(4)由于在启动 Spark 集群时,主节点需要通过 SSH 远程登录从节点以启动从节点中的进程,所以需要配置主节点到所有从节点的免密码登录。如何进行配置免密码登录,具体可以参考我之前写的文章:
(2)接着执行下面命令将下载下来的压缩包解压至指定目录(目录地址可以根据需要自行调整):
(4)接着复制一个workers 文件,并编辑该文件:
(2)启动后在 node1 上执行 jps,能看到 Master 进程:
(4)执行完毕后控制台会输出 Pi 的值,同时我们可以发现 10 个任务被分配给两个 executor 执行。
(3)然后执行下面命令将下载下来的压缩包解压至指定目录(目录地址可以根据需要自行调整):
(2)文件内容如下,设置集群对应的 master 节点 IP 地址(由于是伪集群这里我直接使用 localhost)和端口(通常都使用 7077):
(2)启动后执行 jps 命令可以看到一个 Master 进程和一个 Worker 进程:
(4)执行完毕后控制台会输出 Pi 的值,同时我们可以发现 10 个任务被分配给两个 executor 执行。
172.31.4.99 node1 172.31.3.72 node2 172.31.6.103 node3
(4)由于在启动 Spark 集群时,主节点需要通过 SSH 远程登录从节点以启动从节点中的进程,所以需要配置主节点到所有从节点的免密码登录。如何进行配置免密码登录,具体可以参考我之前写的文章:
(5)最后,我们需要在集群中的所有节点上安装配置 JDK,关于 JDK 的安装可以参考我之前写的文章:
3,Master 节点配置
wget https://archive.apache.org/dist/spark/spark-3.4.1/spark-3.4.1-bin-hadoop3.tgz
(2)接着执行下面命令将下载下来的压缩包解压至指定目录(目录地址可以根据需要自行调整):
tar -zxvf spark-3.4.1-bin-hadoop3.tgz -C /usr/local
(3)然后进入 spark 目录中的 conf 目录,复制一个 spark-env.sh 文件,并编辑该文件:
cd /usr/local/spark-3.4.1-bin-hadoop3/conf/ cp spark-env.sh.template spark-env.sh vi spark-env.sh
- 在文件末尾增加如下内容,指定主节点的主机名:
export SPARK_MASTER_HOST=node1
(4)接着复制一个workers 文件,并编辑该文件:
cp workers.template workers vi workers
- 将文件末尾的 localhost 去掉,增加 node2 和 node3 这两个从节点的主机名:
node2 node3
4,Worker 节点配置
node1 节点上执行如下命令将前面修改好配置的 spark 安装包,拷贝到 node2 和 node2 上,即完成了 Worker 节点的配置
scp -rq /usr/local/spark-3.4.1-bin-hadoop3 node2:/usr/local/ scp -rq /usr/local/spark-3.4.1-bin-hadoop3 node3:/usr/local/
5,启动集群
(1)在 node1 节点上执行如下命令,即可启动 Spark 集群:
cd /usr/local/spark-3.4.1-bin-hadoop3 sbin/start-all.sh
(2)启动后在 node1 上执行 jps,能看到 Master 进程:
(3)而在在 node2 和 node3 上执行 jps,能看到 Worker 进程:
(4)最后我们还可以使用浏览器访问 master 节点的 Spark Web UI 监控页面(端口 8080),可以看到 worker 节点已经成功添加进来了。说明整个 Spark 集群搭建成功。
6,提交应用测试
(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://node1:7077 独立部署模式,连接到 Spark 集群
- 数字 10 表示程序的入口参数,本样例用于设定当前应用的任务数量
./bin/spark-submit \ --master spark://node1: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 界面,我们也可以看到完成的应用:
附、伪集群模式
1,模式介绍
如果是平时测试学习的话,我们也可以搭建一个伪集群,也就是将 master 节点和 worker 节点都部署在一台服务器上。
2,准备工作
(1)首先这台服务器需要安装 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
3,Spark配置
(1)进入 spark 目录中的 conf 目录,创建一个 spark-env.sh 文件:
cd /usr/local/spark-3.4.1-bin-hadoop3/conf/ vi spark-env.sh
(2)文件内容如下,设置集群对应的 master 节点 IP 地址(由于是伪集群这里我直接使用 localhost)和端口(通常都使用 7077):
SPARK_MASTER_HOST=localhost SPARK_MASTER_PORT=7077
4,启动集群
(1)接着进入spark 目录中的 sbin 目录,执行 start-all.sh 脚本启动集群:cd /usr/local/spark-3.4.1-bin-hadoop3/sbin/ ./start-all.sh
(2)启动后执行 jps 命令可以看到一个 Master 进程和一个 Worker 进程:
(3)使用浏览器访问 master 节点的 Spark Web UI 监控页面(端口 8080),可以看到里面有一个 worker 节点。说明整个 Spark 伪集群搭建成功。
5,提交应用测试
(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://localhost:7077 独立部署模式,连接到 Spark 集群
- 数字 10 表示程序的入口参数,本样例用于设定当前应用的任务数量
./bin/spark-submit \ --master spark://localhost: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)