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
posted @   一年都在冬眠  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示