Spark 作为一个数据处理框架和计算引擎,被设计在所有常见的集群环境中运行, 在国内工作中主流的环境为 Yarn,不过逐渐容器式环境也慢慢流行起来。接下来,我们就分别看看不同环境下 Spark 的运行(主要是 Local 和 Standalone 两种,yarn之后再介绍)。
文章目录
- 一、Local 模式
- 1、启动 Local 环境
- 2、测试
- 3、提交应用程序(jar包)
- 二、Standalone 模式
- 1、解压压缩文件
- 2、修改配置文件
- 3、分发 spark-standalone 目录
- 4、启动集群
- 5、测试(提交应用程序jar包)
一、Local 模式
之前在 IDEA 中运行代码的环境我们称之为开发环境,一直在使用的模式可不是 Local 模式,不太一样。所谓的 Local 模式,就是不需要其他任何节点资源就可以在本地执行 Spark 代码的环境,一般用于教学,调试,演示等。
1、启动 Local 环境在具有虚拟机上安装了Spark的基础之上,启动 spark-shell:
首先需要启动spark(开了半天的spark-shell愣是没打开,思前想后spark没启动)
启动目录:spark/sbin/
查看启动进程:jps 出现Worker、Master即可~
然后进入到spark/bin/目录下启动spark-shell:./spark-shell
启动spark-shell后,出现如下的应用程序界面就行了。注意:在spark-shell默认的环境中已经创建好了Spark Context 和 Spark Session,并且Spark Context 的默认master就是local[*].
返回顶部
2、测试
首先在虚拟机的/home/data/spark/目录下准备一份数据,用于展示wordcount案例:
使用 spark-shell 环境 Local模式 实现编程:
启动成功后,可以输入网址进行 Web UI 监控页面访问:
返回顶部
3、提交应用程序(jar包)
File -> Project Structure -> Artifacts,选择添加JAR,选择从已有依赖的模块中…
添加 jar 包流程:
将生成的jar复制到虚拟机/home/data/spark/jars/目录下:
进入到spark/bin/目录执行命令:
./spark-submit --class test01.wordCount.wordCount03 --master local[2] /home/data/spark/jars/spark-core.jar 10
1) --class 表示要执行程序的主类,此处可以更换为自己写的应用程序
2) --master local[2] 部署模式,默认为本地模式,数字表示分配的虚拟 CPU 核数量
3) spark-core.jar 运行的应用类所在的 jar 包,实际使用时,可以设定为自己打的 jar 包
4) 数字 10 表示程序的入口参数,用于设定当前应用的任务数量
报错了:Exception in thread “main“ java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: sc,查了一下,是因为Ideal中的scala 2.12.x 版本和虚拟机上的scala 2.11.x 版本不匹配。
所以临时改动一下,将Ideal的scala版本换成 2.11.8,同时修改一下pom.xml文件,更改为2.11
刷新一下maven,重新打个包,运行一下:
又GG了~
许久不碰确实忘了许多细节的地方,又自己看了一下:java.net.URISyntaxException: Relative path in absolute URI: G:%5CProjects%5CIdealProject-C21%5CSpark%5Cspark-core%5Csrc%5Cmain%5Cscala%5Ctest01%5CwordCount%5Cdata一看 G:... 明白了,jar包里的源程序中数据文件的路径没有修改,因为是打包到虚拟机中运行,所以它只会总虚拟机的文件系统目录去找文件。所以稍作调整:
重新打包运行:
Web UI 监控:
返回顶部
二、Standalone 模式
local 本地模式毕竟只是用来进行练习演示的,真实工作中还是要将应用提交到对应的集群中去执行,这里我们来看看只使用 Spark 自身节点运行的集群模式,也就是我们所谓的独立部署(Standalone)模式。Spark 的 Standalone 模式体现了经典的 master-slave 模式。
集群模式:
1、解压压缩文件首先 linux 中需要安装有 scala,参见:【Linux】scala安装
将 spark-3.0.0-bin-hadoop3.2.tgz 文件上传到 Linux 并解压缩在指定位置
返回顶部
2、修改配置文件
1) 进入解压缩后路径的 conf 目录,修改 slaves.template 文件名为 slaves ,使其生效
mv slaves.template slaves
2) 修改 slaves 文件,添加 work 节点
d linux2 linux3
3) 修改 spark-env.sh.template 文件名为 spark-env.sh
mv spark-env.sh.template spark-env.sh
4) 修改 spark-env.sh 文件,添加 JAVA_HOME 环境变量和集群对应的 master 节点
export JAVA_HOME=/home/java/jdk export SCALA_HOME=/home/scala SPARK_MASTER_HOST=d SPARK_MASTER_PORT=7077 export SPARK_WORKER_MEMORY=1G export SPARK_EXECUTOR_CORES=2
注意:7077 端口,相当于 hadoop3 内部通信的 8020 端口,此处的端口需要确认自己的 Hadoop 配置
5)查看主机名是否与slaves配置文件相匹配
hostname // 查看当前主机名 hostnamectl set-hostname 新的主机名 // 如果主机名与配置文件不相符,使用该命令进行修改
6)配置映射文件(IP地址与主机名的对应)
vi /etc/hosts
如果要进行这一步,则该配置文件每台机器上都需要进行配置,方便分发的时候直接使用主机名;如果不进行配置,那么分发的时候只能使用IP地址。
返回顶部
3、分发 spark-standalone 目录
// 配置过映射文件 scp -r /home/spark-standalone linux2:/home scp -r /home/spark-standalone linux3:/home // 没有配置过映射文件 scp -r /home/spark-standalone xxx.xxx.xxx.172:/home scp -r /home/spark-standalone xxx.xxx.xxx.173:/home
返回顶部
4、启动集群
[root@d ~]# cd /home/spark-standalone/sbin/ [root@d sbin]# ./start-all.sh
如下图所示,集群的启动只需要 Master 主机 d 开启了spark,Worker 从机 linux2、linux3 就会随之启动。
查看 Master 资源监控 Web UI 界面
http://d:8080 //WebUI界面网址
返回顶部
5、测试(提交应用程序jar包)
./spark-submit --class test01.wordCount.wordCount03 --master spark://d:7077 /home/data/spark/jars/spark-core-standalone.jar 10
1) --class 表示要执行程序的主类
2) --master spark://d:7077 独立部署模式,连接到 Spark 集群
3) spark-core.jar 运行类所在的 jar 包
4) 数字 10 表示程序的入口参数,用于设定当前应用的任务数量
集群运行结果:
Web UI 资源监视:
返回顶部
关于 Spank on YARN 模式暂时还未用到,有兴趣的可以参考托马斯先生的【十二】Spark的安装与部署详情(Local模式,Standalone模式,Spank on YARN模式),步骤讲解还是很详细的~,冻死了,先撤!✨✨✨
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)