Spark运行环境
Spark 作为一个数据处理框架和计算引擎,被设计在所有常见的集群环境中运行, 在国内工作中主流的环境为Yarn,不过逐渐容器式环境也慢慢流行起来。
Local模式
所谓的Local模式,就是不需要其他任何节点资源就可以在本地执行Spark代码的环境
解压缩文件
将spark-3.0.0-bin-hadoop3.2.tgz 文件上传到 Linux 并解压缩,放置在指定位置
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
cd /opt/module
mv spark-3.0.0-bin-hadoop3.2 spark-local
启动 Local 环境
-
进入解压缩后的路径,执行如下指令
bin/spark-shell
-
启动成功后,可以输入网址进行Web UI监控页面访问
http://虚拟机地址:4040
命令行工具
在解压缩文件夹下的data目录中,添加word.txt文件。
sc.textFile("data/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
退出本地模式
:quit
提交应用
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 模式
local 本地模式毕竟只是用来进行练习演示的,真实工作中还是要将应用提交到对应的集群中去执行,这里我们来看看只使用Spark自身节点运行的集群模式,也就是我们所谓的独立部署(Standalone)模式。Spark的Standalone 模式体现了经典的master-slave模式。
解压缩文件
将spark-3.0.0-bin-hadoop3.2.tgz 文件上传到 Linux 并解压缩在指定位置
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
cd /opt/module
mv spark-3.0.0-bin-hadoop3.2 spark-standalone
修改配置文件
-
进入解压缩后路径的conf目录,修改slaves.template文件名为slaves
mv slaves.template slaves
-
修改slaves文件,添加work节点
linux1 linux2 linux3
-
修改spark-env.sh.template 文件名为 spark-env.sh
mv spark-env.sh.template spark-env.sh
-
修改spark-env.sh 文件,添加JAVA_HOME环境变量和集群对应的master节点
export JAVA_HOME=/opt/module/jdk1.8.0_144 -- 自己jdk存放的路径 SPARK_MASTER_HOST=hadoop102 --自己的主机名 配置master SPARK_MASTER_PORT=7077
注意:7077端口,相当于hadoop3内部通信的8020端口,此处的端口需要确认自己的Hadoop
配置
-
分发spark-standalone 目录
xsync spark-standalone
启动集群
-
执行脚本命令:
sbin/start-all.sh
-
查看三台服务器运行进程
-
查看Master资源监控Web UI界面: http://hadoop102:8080
提交应用
bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://linux1:7077 ./examples/jars/spark-examples_2.12-3.0.0.jar 10
- –class 表示要执行程序的主类
- –master spark://linux1:7077 独立部署模式,连接到 Spark 集群
- spark-examples_2.12-3.0.0.jar 运行类所在的 jar 包
- 数字10表示程序的入口参数,用于设定当前应用的任务数量
执行任务时,会产生多个Java进程
执行任务时,默认采用服务器集群节点的总核数,每个节点内存1024M。
</