返回 导航

Spark

hangge.com

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

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

二、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

(4)为方便后续服务器间相互访问,我们在三台服务上均执行如下命令编辑的 host 文件:
vi /etc/hosts

(5)然后在里面添加三台服务器的主机名和对应的 IP 地址,使得它们可以通过主机名相互访问:
172.31.4.99 node1
172.31.3.72 node2
172.31.6.103 node3

(4)由于在启动 Spark 集群时,主节点需要通过 SSH 远程登录从节点以启动从节点中的进程,所以需要配置主节点到所有从节点的免密码登录。如何进行配置免密码登录,具体可以参考我之前写的文章:

(5)最后,我们需要在集群中的所有节点上安装配置 JDK,关于 JDK 的安装可以参考我之前写的文章:

3,Master 节点配置

(1)我们访问 Apache Spark 官方下载页面(点击访问),选择合适的Spark版本下载。这里我选择的是 3.4.1 版本,首先我们登录node1节点进行下载:
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)而在在 node2node3 上执行 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 环境,具体步骤可以参考我之前写的文章:

(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

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)

回到顶部