【CentOS】Spark 运行环境(Local、Standalone)


Spark 作为一个数据处理框架和计算引擎,被设计在所有常见的集群环境中运行, 在国内工作中主流的环境为 Yarn,不过逐渐容器式环境也慢慢流行起来。接下来,我们就分别看看不同环境下 Spark 的运行(主要是 LocalStandalone 两种,yarn之后再介绍)。

在这里插入图片描述



一、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 ContextSpark 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 模式。

集群模式:
在这里插入图片描述


首先 linux 中需要安装有 scala,参见:【Linux】scala安装

1、解压压缩文件

将 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 从机 linux2linux3 就会随之启动。
在这里插入图片描述
在这里插入图片描述
查看 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模式),步骤讲解还是很详细的~😎,冻死了,先撤!✨✨✨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑着蜗牛ひ追导弹'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值