搭建分布式Spark集群

yaml 复制代码
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

功能规划

Master Slave1 Slave2
主节点(master) 工作节点(worker) 工作节点(worker)
192.168.66.6 192.168.66.7 192.168.66.21

前提

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

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

准备工作

1. 解压Scala

  • 首先上传Scala的文件到服务器上
bash 复制代码
# 解压文件到指定目录
tar -zxvf scala-2.11.5.tgz -C /opt/module/

#  重命名文件夹
mv /opt/module/scala-2.11.5/ /opt/module/scala

2. 配置用户环境变量

bash 复制代码
cat >>  ~/.bashrc << "EOF"

# ------------------- Scala 配置--------------------
# 设置Scala环境变量,指向Scala安装目录
export SCALA_HOME=/opt/module/scala

# 将Scala的bin目录添加到PATH环境变量
export PATH=$PATH:$SCALA_HOME/bin
# -------------------------------------------------
EOF
bash 复制代码
-----------------------------------------------------------
                          说明

举例   export PATH=$SCALA_HOME/bin:$PATH

英文冒号代表分隔

这段代码表示
1. 当你输入一个命令时,shell会首先在"SCALA_HOME"这个变量的"bin"子目录中查找,
2. 最后,若找不到,则在"PATH"的指定目录中查找

-------------------------------------------------------------

开始安装

3. 解压Spark

  • 首先上传Spark的文件到服务器上,或直接进行以下的下载行为
bash 复制代码
# 使用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. 配置用户环境变量

bash 复制代码
cat >>  ~/.bashrc << "EOF"
# ------------------- Spark 配置--------------------
# 设置Spark环境变量,指向Spark安装目录
export SPARK_HOME=/opt/module/spark

# 将Spark的bin目录添加到PATH环境变量
export PATH=$PATH:$SPARK_HOME/bin
# -------------------------------------------------
EOF
bash 复制代码
-----------------------------------------------------------
                          说明

举例   export PATH=$SPARK_HOME/bin:$PATH

英文冒号代表分隔

这段代码表示
1. 当你输入一个命令时,shell会首先在"SPARK_HOME"这个变量的"bin"子目录中查找,
2. 最后,若找不到,则在"PATH"的指定目录中查找

-------------------------------------------------------------

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

bash 复制代码
# 进入spark配置目录
cd /opt/module/spark/conf

# 复制spark-env.sh模板
cp spark-env.sh.template spark-env.sh
bash 复制代码
根据自己节点的信息,或者查看~/.bashrc,修改下面各项的内容,随后复制粘贴即可
bash 复制代码
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工作节点的配置文件

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

# 配置工作节点
cat >> workers << EOF
slave1
slave2
EOF

7. 同步文件

bash 复制代码
# 同步到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. 环境变量生效

bash 复制代码
# master节点环境变量生效
source  ~/.bashrc

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

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

安装结束

9. 启动Spark集群

bash 复制代码
$SPARK_HOME/sbin/start-all.sh

10. 查看Spark进程

  • master会有Master的进程

  • slave1会有Worker的进程

  • slave2会有Worker的进程

bash 复制代码
# 命令
jps

11. 浏览器访问

textile 复制代码
访问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集群

bash 复制代码
$SPARK_HOME/sbin/stop-all.sh

参考文档

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

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

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

相关推荐
KIDAKN6 小时前
RabbitMQ 初步认识
分布式·rabbitmq
pan3035074796 小时前
Kafka 和 RabbitMQ的选择
分布式·kafka·rabbitmq
hzulwy8 小时前
Kafka基础理论
分布式·kafka
明达智控技术9 小时前
MR30分布式IO在全自动中药煎药机中的应用
分布式·物联网·自动化
jakeswang10 小时前
细说分布式ID
分布式
失散1311 小时前
分布式专题——1.2 Redis7核心数据结构
java·数据结构·redis·分布式·架构
王中阳Go12 小时前
头一次见问这么多kafka的问题
分布式·kafka
boonya13 小时前
Kafka核心原理与常见面试问题解析
分布式·面试·kafka
KIDAKN15 小时前
RabbitMQ 重试机制 和 TTL
分布式·rabbitmq
JAVA学习通15 小时前
【RabbitMQ】----初识 RabbitMQ
分布式·rabbitmq