Spark(五)运行模式(一)
Local模式
- 不需要其他任何节点资源就可以在本地执行Spark代码的环境,一般用于教学,调试,演示等
- 在IDEA中运行代码的环境称之为开发环境
1、解压缩文件
- 将spark-3.0.0-bin-hadoop3.2.tgz文件上传到Linux并解压缩,放置在指定位置,路径中不要包含中文或空格
- 压缩文件放在'/opt/software/',解压缩文件放在'/opt/module/'
[user@hadoop102 software]$ tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/
2、启动Local环境
(1)进入解压缩后的路径,执行如下指令
[user@hadoop102 module]$ cd spark-3.0.0-bin-hadoop3.2/
[user@hadoop102 spark-3.0.0-bin-hadoop3.2]$ bin/spark-shell
(2)启动成功后,可以输入网址进行Web UI监控页面访问
http://192.168.10.102:4040/jobs/
3、命令行工具
- 在/opt/module/hadoop-3.1.3/路径下有一个SEVENTEEN.txt文件,对该文件进行字符计数
scala> sc.textFile("/opt/module/hadoop-3.1.3/SEVENTEEN.txt").flatMap(line=>line.split(" ")).map(word=>(word,1)).reduceByKey(_+_).collect
res4: Array[(String, Int)] = Array((are,1), (we,1), (hello,1), (very,1), (you,2), (name,1), (say,1), (meet,1), (to,1), (nice,2), (seventeen,2), (the,1))
4、退出本地模式
- 按键Ctrl+C或输入Scala指令
:quit
5、提交应用
[user@hadoop102 spark-3.0.0-bin-hadoop3.2]$ bin/spark-submit \
> --class org.apache.spark.examples.SparkPi \
> --master local[2] \
> ./examples/jars/spark-examples_2.12-3.0.0.jar \
> 10
- --class表示要执行程序的主类,此处可以更换为自己写的应用程序
- --master local[2]部署模式,默认为本地模式,数字表示分配的虚拟CPU核数量
- spark-examples_2.12-3.0.0.jar运行的应用类所在的jar包,实际使用时,可以设定为自己打的jar包
- 数字10表示程序的入口参数,用于设定当前应用的任务数量
Standalone模式
- 只使用Spark自身节点运行的集群模式,也就是所谓的独立部署(Standalone)模式
- Spark的Standalone模式体现了经典的master-slave模式
- 集群规划
虚拟机102 | 虚拟机103 | 虚拟机104 | |
---|---|---|---|
Spark | Worker Master | Worker | Worker |
1、修改文件配置
(1)进入解压后路径的conf目录,修改slaves.template文件名为slaves
[user@hadoop102 conf]$ mv slaves.template slaves
(2)修改slaves文件,添加work节点
[user@hadoop102 conf]$ vim slaves
hadoop102
hadoop103
hadoop104
(3)修改spark-env.sh.template文件名为spark-env.sh
[user@hadoop102 conf]$ mv spark-env.sh.template spark-env.sh
(4)修改spark-env.sh文件,添加JAVA_HOME环境变量和集群对应的master节点
export JAVA_HOME=/opt/module/jdk1.8.0_212
SPARK_MASTER_HOST=hadoop102
SPARK_MASTER_PORT=7077
(5)分发spark-3.0.0-bin-hadoop3.2目录
xsync spark-3.0.0-bin-hadoop3.2/
2、启动集群
(1)执行脚本命令
[user@hadoop102 spark-3.0.0-bin-hadoop3.2]$ sbin/start-all.sh
(2)查看三台服务器运行进程
[user@hadoop102 spark-3.0.0-bin-hadoop3.2]$ jpsall
=============== hadoop102 ===============
6449 Jps
6291 Master
6377 Worker
=============== hadoop103 ===============
4679 Worker
4733 Jps
=============== hadoop104 ===============
7725 Worker
7790 Jps
(3)查看Master资源监控Web UI界面
http://hadoop102:8080/
3、提交应用
[user@hadoop102 spark-3.0.0-bin-hadoop3.2]$ bin/spark-submit \
> --class org.apache.spark.examples.SparkPi \
> --master spark://hadoop102:7077 \
> ./examples/jars/spark-examples_2.12-3.0.0.jar \
> 10
- --class表示要执行程序的主类
- --master spark://hadoop102:7077独立部署模式,连接到Spark集群
- spark-examples_2.12-3.0.0.jar运行的应用类所在的jar包
- 数字10表示程序的入口参数,用于设定当前应用的任务数量
- Web界面
4、提交参数说明
[user@hadoop102 spark-3.0.0-bin-hadoop3.2]$ bin/spark-submit \
> --class <main-class>
> --master <master-url> \
> ... # other options
> <application-jar> \
> [application-arguments]
参数 | 解释 | 可选值举例 |
---|---|---|
--class | Spark程序中包含主函数的类 | |
--master | Spark程序运行的模式(环境) | local[*]、spark://linux1:7077、Yarn |
--executor-memory 1G | 指定每个executor可用内存为1G | 符合集群内存配置即可,具体情况具体分析 |
--total-executor-cores 2 | 指定所有executor使用的cpu核数为2个 | 符合集群内存配置即可,具体情况具体分析 |
--executor-cores | 指定每个executor使用的cpu核数 | 符合集群内存配置即可,具体情况具体分析 |
application-jar | 打包好的应用jar,包含依赖 | |
application-arguments | 传给 main()方法的参数 |
5、配置历史服务器
- 首先确保已经启动hadoop集群,HDFS上的directory目录需要提前存在
(1)修改spark-defaults.conf.template文件名为spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
(2)修改spark-default.conf文件,配置日志存储路径
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/directory
(3)修改spark-env.sh文件, 添加日志配置
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory
-Dspark.history.retainedApplications=30"
- 指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数
(4)分发配置文件
xsync conf
(5)重新启动集群和历史服务
sbin/start-all.sh
sbin/start-history-server.sh
(6)查看历史服务
http://hadoop102:18080
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律