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

【回顾】Spark 运行环境(Local、Standalone),第1张

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

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 模式。

集群模式:


首先 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 从机 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模式),步骤讲解还是很详细的~,冻死了,先撤!✨✨✨

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5681833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存