当前位置: 首页 > news >正文

搭建分布式Spark集群

title: 搭建分布式Spark集群
date: 2024-11-29 12:00:00
categories: 
- 服务器
tags:
- Spark
- 大数据

搭建分布式Spark集群

  • 本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3、scala-2.11.5、Spark-3.2.1

功能规划

MasterSlave1Slave2
主节点(master)工作节点(worker)工作节点(worker)
192.168.66.6192.168.66.7192.168.66.21

前提

Spark是基于Scala语言开发的,而Scala语言是基于JAVA语言开发的;故需要先配置好两种语言的环境

Spark工作中需要Hadoop集群;故需要先搭建好Hadoop集群,并启动

准备工作

1. 解压Scala

  • 首先上传Scala的文件到服务器上
# 解压文件到指定目录
tar -zxvf scala-2.11.5.tgz -C /opt/module/#  重命名文件夹
mv /opt/module/scala-2.11.5/ /opt/module/scala

2. 配置用户环境变量

cat >>  ~/.bashrc << "EOF"# ------------------- Scala 配置--------------------
# 设置Scala环境变量,指向Scala安装目录
export SCALA_HOME=/opt/module/scala# 将Scala的bin目录添加到PATH环境变量
export PATH=$PATH:$SCALA_HOME/bin
# -------------------------------------------------
EOF
-----------------------------------------------------------说明举例   export PATH=$SCALA_HOME/bin:$PATH英文冒号代表分隔这段代码表示
1. 当你输入一个命令时,shell会首先在"SCALA_HOME"这个变量的"bin"子目录中查找,
2. 最后,若找不到,则在"PATH"的指定目录中查找-------------------------------------------------------------

开始安装

3. 解压Spark

  • 首先上传Spark的文件到服务器上,或直接进行以下的下载行为
# 使用wget命令下载Spark文件(二选一)
wget -P /tmp/ -c 'https://repo.huaweicloud.com/artifactory/apache-local/spark/spark-3.2.1/spark-3.2.1-bin-hadoop2.7.tgz'# 使用curl命令下载Spark文件(二选一)
curl -C - 'https://repo.huaweicloud.com/artifactory/apache-local/spark/spark-3.2.1/spark-3.2.1-bin-hadoop2.7.tgz' -O /tmp/# 解压文件到指定目录
tar -zxvf /tmp/spark-3.2.1-bin-hadoop2.7.tgz -C /opt/module/#  重命名文件夹
mv /opt/module/spark-3.2.1-bin-hadoop2.7 /opt/module/spark

4. 配置用户环境变量

cat >>  ~/.bashrc << "EOF"
# ------------------- Spark 配置--------------------
# 设置Spark环境变量,指向Spark安装目录
export SPARK_HOME=/opt/module/spark# 将Spark的bin目录添加到PATH环境变量
export PATH=$PATH:$SPARK_HOME/bin
# -------------------------------------------------
EOF
-----------------------------------------------------------说明举例   export PATH=$SPARK_HOME/bin:$PATH英文冒号代表分隔这段代码表示
1. 当你输入一个命令时,shell会首先在"SPARK_HOME"这个变量的"bin"子目录中查找,
2. 最后,若找不到,则在"PATH"的指定目录中查找-------------------------------------------------------------

5. 编写spark主节点的配置文件

# 进入spark配置目录
cd /opt/module/spark/conf# 复制spark-env.sh模板
cp spark-env.sh.template spark-env.sh
根据自己节点的信息,或者查看~/.bashrc,修改下面各项的内容,随后复制粘贴即可
cat >> spark-env.sh << "EOF"
# 配置Spark主节点的IP或主机名
export SPARK_MASTER_IP=master
# 配置Scala的家目录
export SCALA_HOME=/opt/module/scala
# 配置Spark工作节点的内存大小
export SPARK_WORKER_MEMORY=4g
# 配置JAVA的家目录
export JAVA_HOME=/opt/module/jdk1.8.0_202
# 配置Hadoop的家目录
export HADOOP_HOME=/opt/module/hadoop-3.1.4
# 配置Hadoop的配置目录
export HADOOP_CONF_DIR=/opt/module/hadoop-3.1.4/etc/hadoop
EOF

6. 编写spark工作节点的配置文件

# 复制workers模板
cp workers.template workers
根据自己工作节点的信息,修改下面的内容,随后复制粘贴即可
# 清空工作节点原本的信息——即删除这个文件的最后一行
sed -i '$d' workers# 配置工作节点
cat >> workers << EOF
slave1
slave2
EOF

7. 同步文件

# 同步到slave1机器
scp -r /opt/module/scala/ slave1:/opt/module/
scp -r /opt/module/spark/ slave1:/opt/module/
scp  ~/.bashrc root@slave1:/root# 同步到slave2机器
scp -r /opt/module/scala/ slave2:/opt/module/
scp -r /opt/module/spark/ slave2:/opt/module/
scp  ~/.bashrc root@slave2:/root

8. 环境变量生效

# master节点环境变量生效
source  ~/.bashrc# slave1节点环境变量生效
ssh slave1 'source  ~/.bashrc'# slave2节点环境变量生效
ssh slave2 'source  ~/.bashrc'

安装结束

9. 启动Spark集群

$SPARK_HOME/sbin/start-all.sh

10. 查看Spark进程

  • master会有Master的进程

  • slave1会有Worker的进程

  • slave2会有Worker的进程

# 命令
jps

11. 浏览器访问

访问Spark,地址:http://192.168.66.6:端口#端口详情
4040:这是Spark UI的默认端口,用于监控和查看Spark应用的状态。
7077:这是StandAlone模式下Spark Master服务的默认端口。
8080:这是Spark Master的Web UI端口,用于查看集群状态。
8081:这是Spark Worker的Web UI端口,用于查看单个工作节点的状态。这个地址是master的IP地址

12. 停止Spark集群

$SPARK_HOME/sbin/stop-all.sh

参考文档

  1. 大数据分布式集群搭建详细步骤(Spark的安装与配置)_spark分布式集群部署及ha配置-CSDN博客

  2. 【Spark】Windows下安装Spark(亲测成功安装)_windows安装spark-CSDN博客

  3. Apache Spark 3.2.1安装教程-百度开发者中心

http://www.lryc.cn/news/506936.html

相关文章:

  • Django基础 - 01入门简介
  • 简单的bytebuddy学习笔记
  • 【服务端】Redis 内存超限问题的深入探讨
  • Springboot logback 日志打印配置文件,每个日志文件100M,之后滚动到下一个日志文件,日志保留30天(包含traceid)
  • 《计算机组成及汇编语言原理》阅读笔记:p1-p8
  • 【游戏中orika完成一个Entity的复制及其Entity异步落地的实现】 1.ctrl+shift+a是飞书下的截图 2.落地实现
  • 在 Ubuntu 上安装 MySQL 的详细指南
  • Java 优化springboot jar 内存 年轻代和老年代的比例 减少垃圾清理耗时 如调整 -XX:NewRatio
  • 嵌入式驱动RK3566 HDMI eDP MIPI 背光 屏幕选型与调试提升篇-eDP屏
  • 在Java虚拟机(JVM)中,方法可以分为虚方法和非虚方法。
  • 【windows】sonarqube起不来的问题解决
  • golang异常
  • 搭建MongoDB
  • Android中坐标体系知识超详细讲解
  • 不需要服务器,使用netlify快速部署自己的网站
  • Swin transformer 论文阅读记录 代码分析
  • 信息安全概论
  • 2024年12月16日Github流行趋势
  • Go 1.24即将到来!
  • FFmpeg库之ffplay
  • scala中模式匹配的应用
  • WebRTC搭建与应用(一)-ICE服务搭建
  • 【计算机视觉基础CV】03-深度学习图像分类实战:鲜花数据集加载与预处理详解
  • Kafka学习篇
  • 冬日养仓鼠小指南:温暖与陪伴同行
  • 【计算机视觉基础CV】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用
  • Python爬虫之代理的设置
  • Canoe E2E校验自定义Checksum算法
  • [HNCTF 2022 Week1]你想学密码吗?
  • 端到端自动驾驶大模型:视觉-语言-动作模型 VLA