搭建Spark分布式集群

1,下载

下载 spark-3.5.4-bin-without-hadoop.tgz

地址: https://downloads.apache.org/spark/spark-3.5.4/

2,安装

通过虚拟机设置共享文件夹将需要的安装包复制到linux虚拟机中 localhost1。虚拟机的共享盘在 /mnt/hgfs/。 将共享盘安装包复制到 存在目标路径/opt/software/

解压缩

bash 复制代码
cd /opt/software/
tar -zxvf spark-3.5.4-bin-without-hadoop.tgz -C /usr/local/applications/

3,配置环境变量

配置三个Linux节点

bash 复制代码
vi /etc/profile


SPARK_HOME=/usr/local/applications/spark-3.5.4-bin-without-hadoop
PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

export SPARK_HOME PATH
bash 复制代码
source /etc/profile

4,修改Spark配置

bash 复制代码
cd $SPARK_HOME/conf

workers

bash 复制代码
cp workers.template workers

vi workers

localhost1
localhost2
localhost3

spark-defaults.conf

bash 复制代码
cp spark-defaults.conf.template spark-defaults.conf

vi spark-defaults.conf

spark.master                     spark://localhost1:7077
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://localhost1:9000/spark-eventlog
spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.driver.memory              512m

启动HDFS

bash 复制代码
start-dfs.sh

创建HDFS日志目录

bash 复制代码
hdfs dfs -mkdir /spark-eventlog

spark-env.sh

bash 复制代码
cp spark-env.sh.template spark-env.sh

vi spark-env.sh

export JAVA_HOME=/usr/local/java/jdk1.8.0_431
export HADOOP_HOME=/usr/local/applications/hadoop-3.3.6
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/usr/local/applications/hadoop-3.3.6/bin/hadoop classpath)
export SPARK_MASTER_HOST=localhost1
export SPARK_MASTER_PORT=7077

5, 将Spark软件分发到集群

先关闭防火墙

bash 复制代码
systemctl stop firewalld
 
systemctl disable firewalld

将spark分发到localhost2 和 localhost3

bash 复制代码
cd /usr/local/applications
scp -r spark-3.5.4-bin-without-hadoop root@localhost2:/usr/local/applications/spark-3.5.4-bin-without-hadoop
scp -r spark-3.5.4-bin-without-hadoop root@localhost3:/usr/local/applications/spark-3.5.4-bin-without-hadoop

6, 启动集群

bash 复制代码
cd $SPARK_HOME/sbin

./start-all.sh

启动后查看三个节点的进程

bash 复制代码
[root@localhost1 sbin]# jps
3397 Jps
3190 Master
3336 Worker


[root@localhost2 ~]# jps
2966 Worker
3030 Jps


[root@localhost3 ~]# jps
2972 Worker
3037 Jps

在浏览器中输入:

可以看见如下 Spark 的 Web 界面:

7,集群测试

需要使用hdfs,所以需要先启动HDFS

bash 复制代码
start-dfs.sh

1, 计算圆周率

bash 复制代码
run-example SparkPi 10

输出结果

bash 复制代码
[root@localhost1 conf]# run-example SparkPi 10
Pi is roughly 3.141343141343141

2, 启动spark-shell

bash 复制代码
[root@localhost1 conf]# spark-shell
Spark context Web UI available at http://localhost1:4040
Spark context available as 'sc' (master = spark://localhost1:7077, app id = app-20250128143941-0005).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.5.4
      /_/
         
Using Scala version 2.12.18 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_431)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

http://localhost1:4040/jobs/

在spark shell 中执行

bash 复制代码
scala> val lines = sc.textFile("/wcinput/wc.txt")
lines: org.apache.spark.rdd.RDD[String] = /wcinput/wc.txt MapPartitionsRDD[1] at textFile at <console>:23

scala> lines.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect().foreach(println)
(mapreduce,3)                                                                   
(yarn,2)
(neil,3)
(hadoop,2)
(jack,3)
(hdfs,1)
相关推荐
字节跳动数据平台2 小时前
不重拍,也能换道具、换商品、换画风?短剧转漫、电商换款新解法来了
大数据
武子康2 小时前
攻击动作做对了,游戏规则就对了吗?H3-World 与三条控制路线的分工
大数据·人工智能·agent
Lansonli3 小时前
大数据Spark(八十七):Spark-Submit 参数详解
大数据·分布式·spark
cc5725026534 小时前
数据科学与大数据技术专业考证清单有哪些?
大数据
qq_452396234 小时前
第二篇:《CommitLog + ConsumeQueue:一条日志解决 Kafka 多分区随机写的难题》
分布式·kafka
Alluxio1 天前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
喵个咪1 天前
GoWind Admin 拆解:BI 大屏设计器——schema 即 JSON、resolver 注入与三张快照表的口径谱系
大数据·后端·go
武子康1 天前
H3-World 的 11.3 小时训练数据,是怎样对齐成动作监督的?
大数据·人工智能·深度学习
字节跳动数据平台1 天前
火山引擎知识引擎VeKnow进化之路(下):让 AI 智能体更可用、更可信、更懂业务
大数据
Elastic 中国社区官方博客1 天前
更少的位数,相同的召回率:DiskBBQ 更保守的自动校准扫描
大数据·运维·开发语言·人工智能·elasticsearch·搜索引擎