搭建分布式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安装教程-百度开发者中心

相关推荐
Austindatabases6 小时前
OceanBase4.0 跟我学--分布式到底可靠不可靠,到底丢不丢数-- 核心实现
分布式
隔着天花板看星星9 小时前
Spark-Streaming性能调优
大数据·分布式·spark
冬至喵喵9 小时前
kafka理解记录
分布式·kafka
旭东怪11 小时前
java Kafka批量消费和单个消费消息
分布式·kafka
life or die11 小时前
深入理解Kafka:核心设计与实践原理读书笔记
分布式·kafka
lovPopcorn11 小时前
Kafka常见面试题+详细解释,易理解。
分布式·kafka
PingCAP11 小时前
B 站数据库负责人赵月顺:助力海内外业务增长,百套 TiDB 的选型与运维实战
数据库·分布式·tidb
毕业设计-0112 小时前
springboot分布式id,基于snowflake的分布式统一id生成工具
spring boot·分布式·后端
布川ku子15 小时前
kafka 本地 windos部署详细教学,轻松使用本地kafka进行消息推送接收!
分布式·kafka