您的位置:首页 > 汽车 > 时评 > 基于Spark3.3.4版本,实现Standalone 模式高可用集群部署

基于Spark3.3.4版本,实现Standalone 模式高可用集群部署

2024/11/18 6:18:04 来源:https://blog.csdn.net/qq_25409421/article/details/139771479  浏览:    关键词:基于Spark3.3.4版本,实现Standalone 模式高可用集群部署

目录

一、环境描述

二、部署Spark 节点

2.1 下载资源包

2.2 解压

2.3 配置

2.3.1 配置环境变量

2.3.2 修改workers配置文件

2.3.3 修改spark.env.sh文件

2.3.4 修改spark-defaults.conf

2.4 分发

2.5 启动服务

2.5.1 启动zookeeper

2.5.2 启动hdfs

2.5.3 启动spark

2.6 测试

2.6.1 测试HA主备切换

2.6.2 测试Spark调度和计算功能


一、环境描述

系统环境描述:本教程基于CentOS 8.0版本虚拟机

Hadoop ha 集群环境说明:

机器节点信息:

Spark 集群环境说明:

机器节点信息:

注意: Spark Standalone 模式本身不依赖Hadoop,只是这里我需要使用hdfs,而且集群高可用模式也需要使用到Zookeeper,所以这里我会启动Zookeeper和hdfs,不需要启动Yarn 调度层了,可以不启动Yarn。

二、部署Spark 节点

2.1 下载资源包

Spark 包下载地址:

Index of /dist/spark/spark-3.3.4 (apache.org)

注意:需要和Hadoop体系的版本要保持一致,我这里的Hadoop是3.3.4版本,所以,我的Spark 版本也需要是3.3.4版本。

2.2 解压

tar -zxvf spark-3.3.4-bin-hadoop3.tgz

2.3 配置

可以参考官网,自己跟着官网自己学着部署,官网是最官方的,最正确的方式,官网参考地址:

Spark 独立模式 - Spark 3.3.4 文档 (apache.org)

2.3.1 配置环境变量

# 进入配置文件
vim /etc/profile
# 添加SPARK_HOME环境变量
export SPARK_HOME=/usr/local/spark-3.3.4-bin-hadoop3

2.3.2 修改workers配置文件

#重命名文件
mv workers.template workers
# 进入文件编辑
vim workers
# 添加worker节点
node3
node4

2.3.3 修改spark.env.sh文件

# 进入config目录
cd spark-3.3.4-bin-hadoop3/conf
# 重命名配置文件
mv spark-env.sh.template spark-env.sh
# 修改配置信息
vim spark-env.sh
export HADOOP_CONF_DIR=/usr/local/hadoop-3.3.4/etc/hadoop
export SPARK_MASTER_HOST=master # 因为我这里部署的是HA模式,所以在master节点,这里配置的是master,在node1节点,这里就是node1
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=8080
export SPARK_WORKER_CORES=4
export SPARK_WORKER_MEMORY=4g

2.3.4 修改spark-defaults.conf

# 进入config目录
cd spark-3.3.4-bin-hadoop3/conf
# 重命名配置文件
mv spark-defaults.conf.template spark-defaults.conf
# 修改配置信息
vim spark-defaults.conf
spark.deploy.recoveryMode       ZOOKEEPER
spark.deploy.zookeeper.url      node2:2181,node3:2181,node4:2181
spark.deploy.zookeeper.dir      /spark
# 开启spark的日期记录功能
spark.eventLog.enabled	true
#创建spark日志路径,待会儿要创建
spark.eventLog.dir	hdfs://mycluster/spark-logsspark.history.fs.logDirectory  hdfs://mycluster/spark-logs
spark.yarn.jars  hdfs://mycluster/work/spark_lib/jars/*

2.4 分发

将配置好的spark-3.3.4-bin-hadoop3 分发到其他服务器

# 分发spark 包 
scp -r /usr/local/spark-3.3.4-bin-hadoop3/ node1:/usr/local/
scp -r /usr/local/spark-3.3.4-bin-hadoop3/ node3:/usr/local/
scp -r /usr/local/spark-3.3.4-bin-hadoop3/ node4:/usr/local/
# 分发环境变量文件(记得到各自的服务器执行 source /etc/profile 使配置生效)
scp -r /etc/profile node1:/etc/profile
scp -r /etc/profile node3:/etc/profile
scp -r /etc/profile node4:/etc/profile

2.5 启动服务

2.5.1 启动zookeeper

# 启动zookeeper (需要分别启动)
zkServer.sh start

2.5.2 启动hdfs

start-dfs.sh start

2.5.3 启动spark

# 进入spark命令目录
/usr/local/spark-3.3.4-bin-hadoop3/sbin
# 启动服务
./start-all.sh
# 启动node1的master
./start-master.sh

接着验证一下,启动的服务是不是按照我们配置的那样:

检验下master节点,看下是否有Master进程:

发现有了,那证明主节点启动起来了

接着验证下node3、node4,看下是否有Worker进程:

我们从上图中发现,node3,node4节点,分别有Worker进程了,说明集群部署成功了。

最后检查下node1节点,是不是有Master进程:

Ok,我们现在发现已经启动了两个Master进程了,一个在master节点,一个在node1节点。

我们可以通过Spark UI页面看下信息,访问http://master:8080

接着访问http://node1:8080

我们发现,node1节点的状态是standby状态

到此,我们Spark Stanalone模式HA就算部署成功了

2.6 测试

2.6.1 测试HA主备切换

为了验证主备切换的情况,我们可以把活跃(ALIVE)的主节点kill掉,观察之前备用(StandBy)的节点是否会做切换,升级为主节点:

# 查看master进程编号
jps
# kill -9 pid

kill掉了master节点的Master进程,看下是否切换到node1的Master中

从上图中可以看到,Master进程切换到了node1,状态为ALIVE状态,证明HA起到了作用,验证完成。

2.6.2 测试Spark调度和计算功能

# 提交jar包到集群
bin/spark-submit --master spark://master:7077,node1:7077 --class org.apache.spark.examples.SparkPi  /usr/local/spark-3.3.4-bin-hadoop3/examples/jars/spark-examples_2.12-3.3.4.jar 100000

从以上图片中我们可以看到,提交的任务进入到了Spark 集群调度中,且已经在运行了,整个部署到此结束。

今天基于Spark3.3.4版本,实现Standalone 模式高可用集群部署的相关内容就分享到这里,可以关注Spark专栏《Spark》,后续不定期分享相关技术文章。如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com