基于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-logs

spark.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》,后续不定期分享相关技术文章。如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/722063.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

20240611-WWDC2024-visionOS 2/Apple Intelligence/ARKit

目录 1 visionOS 2 1)从2D图像提取左右眼的视角,生成空间照片——利用机器学习 2)提供丰富的API和框架 2 Apple Intelligence 1)自动对通知优先级排序、缩略通知、专注模式 2)Siri可以根据屏幕内容执行相关操作 …

使用海康威视的SDK,利用WPF设计一个网络摄像头的显示控制程序(上位机)

目录 一、下载海康威视的SDK 1.1 关于SDK 1.2 关于API 1.3 关于DLL 1.4 下载海康威视的SDK 1.5 关于网络高清摄像机 二、对下载的SDK进行调试 三、利用Visual Studio打开项目的解决方案 3.1 Visual Studio 2022下载 3.2 关于句柄 四、打开WPF进行ui页面设计 4.1 关于…

《现代通信原理与技术》模拟调制与解调—FM 调制实验报告

摘要 本实验旨在通过 MATLAB 软件进行模拟调制与解调的实践, 加深对频率调制(Frequency Modulation, FM)原理的理解,并掌 握 FM 调制与解调的实现方法。 关键词:MATLAB 引言 在现代通信系统中,调制技术是…

MySQL 创建数据表

创建MySQL数据表需要以下信息: 表名表字段名定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (column_name column_type); 以下例子中我们将在 W3CSCHOOL 数据库中创建数据表w3cschool_tbl: CREAT…

win11 之下载安装 allure

1. 下载 https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/2.25.0/allure-commandline-2.25.0.zip 2. 配置系统变量 path 下添加解压后的bin目录 3. 验证是否安装成功 输入 allure

malloc和new的本质区别

目录 一、结论 二、示例 1.实现类T 2.用malloc分配类T的内存空间 3.用new分配类T的内存空间 一、结论 malloc 和 new 都是用于在运行时动态分配内存的机制。但它们之间存在一些本质的区别,主要是在使用方面,现在我们直接说结论,然后在通过…

docker拉取镜像的时候超时

问题描述: 有时候我们在使用docker拉取镜像的时候会遇到超时的情况迟迟拉取不下来,如下面 这时候我们需要设置成国内源; 操作步骤: 首先:创建docker目录 sudo mkdir -p /etc/docker其次:创建daemon文件…

MacOS - command not found: brew

问题描述 command not found: brew 原因分析 没有安装 Homebrew,安装后即可使用~ 解决方案 打开终端,输入:/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)",点击回车 在弹出…

[C#]winform基于opencvsharp实现黑白图像上色

【算法简介】 技术有时会提高艺术,但有时也会破坏艺术。着色黑白电影是一个可以追溯到1902年的古老想法。几十年来,许多电影创作者反对将黑白电影着色的想法,并将其视为对艺术的破坏。但今天它被接受为艺术形式的增强。该技术本身已经从艰苦…

2024最新IDEA插件开发+发布全流程 SelectCamelWords[选中驼峰单词](idea源代码)

2024最新IDEA插件开发(发布)-SelectCamelWords[选中驼峰单词](idea源代码) 参考文档 Jetbrains Idea插件开发文档: https://plugins.jetbrains.com/docs/intellij/welcome.html代码地址:https://github.com/yangfeng…

超大场景的三维模型(3D)轻量化的主要技术方法

超大场景的三维模型(3D)轻量化的主要技术方法 超大场景的三维模型在虚拟现实、游戏开发和可视化应用等领域具有重要的价值和应用前景。然而,由于其庞大的数据量和复杂的几何结构,给数据存储、传输和渲染带来了挑战。为了提高超大场…

搭建PHP开发环境:Linux篇

目录 一、引言 二、环境准备 三、安装Web服务器(Apache) Ubuntu/Debian系统: CentOS/Red Hat系统: 四、安装PHP解释器 Ubuntu/Debian系统: CentOS/Red Hat系统: 五、配置Apache以支持PHP Ubuntu/…

Hive期末总结

hive的概念,谁开发的 Apache Hive 是一个Apache 软件基金会维护的开源项目 Facebook贡献 hive是一个基于hadoop的数据仓库工具(对数据汇总查询和分析的工具) hive执行原理 Hive通过给用户提供的一系列交互接口,接收到用户的指令…

【x264】整体框架汇总

【x264】整体框架汇总 1. x264整体框架图2. 思考 参考: x264源代码简单分析:概述 参数分析: 【x264】x264编码器参数配置 流程分析: 【x264】x264编码主流程简单分析 【x264】编码核心函数(x264_encoder_encode&…

创建型设计模式

1.设计模式是什么? 设计模式是指在软件开发过程中,经过验证的,用于解决在特定环境下,重复出现的,特定问题的解决方案。 软件设计过程中,解决问题的固定套路。 慎用设计模式。 2.设计模式是怎么来的&…

数据库实战(一)(关系数据库设计)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀数据库 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 前言 练习题 题型一:判断关系…

“首秀”欧洲杯,海信冰箱欧洲市占率居国产品牌首位

随着欧洲杯的火热开赛,挑灯夜战、观看球赛的时刻已经来临。此时,你需要何物相伴?是打开冰箱,取出真空腌制的食材,亲手烹饪一场观赛盛宴?还是取出极致保鲜的荔枝、樱桃,一边观赛一边品味&#xf…

如何避免接口重复请求(axios推荐使用AbortController)

前言: 我们日常开发中,经常会遇到点击一个按钮或者进行搜索时,请求接口的需求。 如果我们不做优化,连续点击按钮或者进行搜索,接口会重复请求。 以axios为例,我们一般以以下几种方法为主: 1…

【文献阅读】Partially Adaptive Array Techniques

Abstract 文章研究了在多窄带干扰环境下,辅助阵元的选择,为部分自适应天线阵,以达到性能优化的目的。推导了双干扰问题的显式解。这个案例足以说明多个干扰的相互作用,同时也为更复杂的问题提供了一定程度的理解。本文还提出并讨…

如何实现ElementUI动态表头?

可能看到这个标题,有些小伙伴会有些疑惑,动态表头是个什么东西,怎么没听说过? 其实动态表头在企业的项目中用途还是非常广泛的,比如erp系统什么的 那么动态表头是什么呢?说简单点就是让ElementUI的Table表格可以实现自定义表头展示+表头拖拽排序的一个功能 这个东西我…