一、从官网下载spark软件包
https://archive.apache.org/dist/spark/
3.5.0版本
二、把软件包上传到对应的虚拟机中的主机上
三、解压到/opt/module
tar -zxvf spark-3.5.0-bin-hadoop3.tgz -C /opt/module/
四、部署spark环境
1.修改spark软件包的名字:方便后续访问
mv spark-3.5.0-bin-hadoop3 spark-3.5.0
2.配置spark环境变量:在任意路径下都能访问到spark软件包中的文件或文件夹
vi /etc/profile.d/my_env.sh
export SPARK_HOME=/opt/module/spark-3.5.0
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
注意:如果环境变量错误,导致命令不能用,则输入以下命令:
export PATH=$PATH:/usr/bin:/usr/sbin:/bin:/sbin
3.生效环境变量配置
source /etc/profile
4.进入/conf改名,删掉后缀名模板
mv spark-env.sh.template spark-env.sh
mv spark-defaults.conf.template spark-defaults.conf
5.修改spark-env.sh,在末尾添加以下内容
添加jdk环境变量
export JAVA_HOME=$JAVA_HOME
添加hadoop环境变量
export HADOOP_HOME=$HADOOP_HOME
添加hadoo文件所在的路径
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
6.运行spark自带案例进行验证
./run-example SparkPi 2>&1 | grep "Pi is"
(以上是spark单机平台搭建,以下是spark完全分布式搭建)
7.再进入/opt/module/spark-3.5.0/conf/下,编辑spark-env.sh,在末尾添加以下内容
(第一行内容要写自己主机的ip)
#设置spark集群主节点的ip
export SPARK_MASTER_IP=192.168.133.3
#设置spark集群主节点进程部署的端口号
export SPARK_MASTER_PORT=7077
#设置spark的worker节点的内存
export SPARK_WORKER_MEMORY=1g
#设置spark集群worker节点的内核数
export SPARK_WORKER_CORES=2
#设置spark集群的执行器的内存
export SPARK_EXECUTOR_MEMORY=1G
#设置spark集群的执行器的内核数
export SPARK_EXECUTOR_CORES=2
8.改名
mv workers.template workers
9.编辑并加入workers
Master
slave1
slave2
10.向其他主机传送
scp -r spark-3.5.0 slave1:/opt/module/
scp -r spark-3.5.0 slave2:/opt/module/
11.开启hadoop
start-dfs.sh
start-yarn.sh
12.开启Master和workers进程(spark)
start-master.sh
start-workers.sh
13.看节点是否正确
14.进入/opt/module/spark-3.5.0/conf下,编辑 spark-defaults.conf最后几行内容(第一行要修改成自己对应的主机名)
(第三行要修改成主机名+端口号+自己的日志存放目录)
vi spark-defaults.conf
# Example:
spark.master spark://Master:7077
#启用日志记录功能
spark.eventLog.enabled true
#日志存放目录
spark.eventLog.dir hdfs://Master:8020/spark-logs
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 5g
spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
15.停掉Master和workers进程(spark)
stop-workers.sh
stop-master.sh
16.进入ui界面创建spark-logs(如果创建不了,看安全模式与防火墙是否关闭)
17.再重复步骤12
18.输入命令进行验证看是否安装成功,出现如下图所示则部署成功
spark-shell
五、spark的运行架构
1.按照主从模式进行部署
主节点:Master---资源管理调度和任务的分配(类似yarn)
从节点:Worker---执行具体的计算任务
2.整体运行架构
(1)用户编写spark应用程序
(2)用户将应用程序提交给spark集群
(3)驱动器会创建对应的编程入口(SparkContext/SparkSession)
(4)主节点复制资源管理调度和任务分配
(5)从节点执行计算任务(多个计算任务:每个计算任务会分配一个执行器)
(6)从节点会将任务的结果返回到主节点,主节点再继续做相应的操作