【Spark征服之路-2.1-安装部署Spark(一)】

实验目标:

本节课实验将完成Spark 4种部署模式的其中2种,分别是Local、Standalone模式。

实验准备工作:
  1. 三台linux虚拟机
  2. spark的压缩包
实验步骤:
Spark-local

Spark的Local模式仅需要单个虚拟机节点即可,无需启动hadoop集群。实验步骤如下:

  1. 将spark的安装包上传到虚拟机node01中(建议路径:/opt/software/spark)并解压缩文件。将解压文件夹重命名为spark-local

解压:tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz

重命名:mv spark-3.0.0-bin-hadoop3.2.tgz spark-local

  1. 启动Local环境。进入spark-local中,执行如下命令:

bin /spark-shell

启动成功后,可以输入网址进行Web UI监控页面进行访问。(默认端口为4040)

  1. 命令行工具

在解压缩文件夹下的 data 目录中,添加 word.txt 文件。

在命令行工具中执行如下代码指令。

sc.textFile("data/word.txt").flatMap(.split(" ")).map((,1)).reduceByKey(+).collect

  1. 退出本地模式

Ctrl+C 或者输入scala命令****:quit****

  1. 提交测试应用

在spark-local路径中输入以下指令:

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master local[2] \

./examples/jars/spark-examples_2.12-3.0.0.jar \

10

指令说明:

  1. --class 表示要执行程序的主类,此处可以更换为咱们自己写的应用程序

  2. --master local[2] 部署模式,默认为本地模式,数字表示分配的虚拟 CPU 核数量

  3. spark-examples_2.12-3.0.0.jar 运行的应用类所在的 jar 包,实际使用时,可以设定为咱们自己打的 jar 包

  4. 数字 10 表示程序的入口参数,用于设定当前应用的任务数量

运行结果:

Spark-standalone

Spark的独立部署模式可以类比HDFS的完全分布式安装,在这个模式中只会使用Spark自身节点来运行集群,Spark-standalone体现了经典的master-slave模式。

集群规划:

|-------|---------------|--------|--------|
| | node01 | node02 | node03 |
| Spark | Master Worker | Worker | Worker |

实验步骤:

  1. 解压缩文件。将解压后的文件夹重命名为spark-standalone。

mv spark-3.0.0-bin-hadoop3.2 spark-standalone

在node02、node03节点上分别创建spark文件夹(路径为/opt/software/spark)

  1. 修改配置文件

①进入spark-standalone的 conf 目录,修改 slaves.template文件名为 slaves

mv slaves.template slaves

②修改slaves文件,添加worker节点

v i slaves

③修改 spark-env.sh.template 文件名为 spark-env.sh

m v spark-env.sh.template spark-env.sh

④修改 spark-env.sh 文件,添加Java的环境变量和集群对应的 master 节点

v i spark-env.sh

⑤分发 spark-standalone 目录(需要提前在node02、node03节点的对应路径创建spark文件夹)

scp -r spark-standalone node02:/opt/software/spark

scp -r spark-standalone node03:/opt/software/spark

启动集群

①在spark-standalone路径下执行脚本命令

sbin/start-all.sh

②查看三台节点的运行进程

③查看Master资源监控Web UI界面 node 01:8080

④提交测试应用

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://node01:7077 \

./examples/jars/spark-examples_2.12-3.0.0.jar \

10

参数说明:

  1. --class 表示要执行程序的主类

  2. --master spark://node01:7077 独立部署模式,连接到 Spark 集群

  3. spark-examples_2.12-3.0.0.jar 运行类所在的 jar 包

  4. 数字 10 表示程序的入口参数,用于设定当前应用的任务数量

执行任务时,节点会产生多个Java进程

执行任务时,默认采用服务器集群节点的总核数,每个节点内存 1024M。

配置历史服务

由于 spark-shell 停止掉后,集群监控 node01:4040 页面就看不到历史任务的运行情况,所以 开发时都配置历史服务器记录任务运行情况。

①修改 spark-defaults.conf.template 文件名为 spark-defaults.conf

mv spark-defaults.conf.template spark-defaults.conf

②修改 spark-default.conf 文件,配置日志存储路径

注意: 需要启动 hadoop 集群,HDFS 上的 directory 目录需要提前存在。

h d fs dfs -mkdir /directory

③修改 spark-env.sh 文件, 添加日志配置

export SPARK_HISTORY_OPTS="

-Dspark.history.ui.port=18080

-Dspark.history.fs.logDirectory=hdfs://node01:9000/directory

-Dspark.history.retainedApplications=30"

参数含义:

⚫ 参数 1 含义:WEB UI 访问的端口号为 18080

⚫ 参数 2 含义:指定历史服务器日志存储路径

⚫ 参数 3 含义:指定保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。

④分发配置文件

scp -r spark-defaults.conf node02:$PWD

scp -r spark-defaults.conf node03:$PWD

scp -r spark-env.sh node02:$PWD

scp -r spark-env.sh node03:$PWD

⑤重新启动spark集群并启动历史服务

sbin /stop-all.sh

sbin/start-all.sh

sbin/start-history-server.sh

⑥重新执行任务

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://node01:7077 \

./examples/jars/spark-examples_2.12-3.0.0.jar \

10

⑦查看历史任务 node01:18080

相关推荐
goyeer12 小时前
【ITIL】ITIL服务管理的四个维度
大数据·运维·信息化·自动运维·itil
珠海西格电力12 小时前
零碳园区管理系统“云-边-端”架构协同的价值及具体案例
大数据·数据库·人工智能·架构·能源
财迅通Ai12 小时前
星星科技:双主业协同增效,经营现金流增82.62%
大数据·科技·星星科技
丝雨_xrc12 小时前
Claude Opus 4.7 新手快速上手指南
大数据·网络·人工智能
QYR-分析12 小时前
全球汽车微孔锂电铜箔市场分析及发展机遇
大数据·人工智能·汽车
heiqizero12 小时前
Spark RDD转换算子02
spark
ai大模型中转api测评12 小时前
构建生产级 AI 应用:GPT-5.5 与 Claude 4.7 的 Token 成本管理与工程化实战
大数据·人工智能·gpt·自动化
Mr_sst12 小时前
文件上传并发控制:为什么选Redisson可过期信号量?(避坑指南)
网络·数据库·redis·分布式·安全架构
汽车仪器仪表相关领域12 小时前
Kvaser Memorator R SemiPro:双通道CAN总线记录仪,汽车与工业测试的高性价比之选
大数据·网络·人工智能·功能测试·汽车·安全性测试
天天爱吃肉821812 小时前
空间智能上车:新能源OEM决胜「第三空间」的底层技术革命|研发工程师深度解析
大数据·人工智能·嵌入式硬件·汽车