spark有四种最基本的运行和调度模式以及各自的应用场景

spark有四种最基本的运行模式

local模式
standalone scheduler模式
yarn模式
mesos模式

spark的local模式

就是本地模式,就是单机跑,无需启动集群进入spark客户端提交任务即可

//这样进去的话是spark local模式
[root@doit01 spark-2.3.3-bin-hadoop2.7]# /usr/apps/spark-2.3.3-bin-hadoop2.7/bin/spark-shell

mesos模式

是国外非常流行的模式,但是在中国很少用

spark standalone模式和spark on yarn 模式对比以及场景的使用

spark on yarn 无需启动spark集群,但是spark standalone需要开启spark集群

使用spark on yarn提交任务是可以不用启动Spark集群,有一个节点就可以;
就是把spark作为一个客户端,将作业提交到yarm上取运行,因为相关的jvm环境上有yarn管理(启动结束等);
但是使用standalone模式,Spark集群一定要启动,因为需要依赖spark自己的worker,master进行任务的启动调度等;
standalone模式是spark自带的分布式部署模式,应用程序部署模式;

spark standalone和spark on yarn的概念区别
spark standalone模式只支持FIFO(单用户串行,排队先来先执行)的资源调度,就是所有的节点的所有资源,对应该都是可用的,
而spark on yarn是不止支持FIFO的资源调度模式,还提供了弹性和公平的分配方式例如Capacity Scheduler(容器调度器)和Fair Scheduler(公平调度器);
正是因为这两个资源调度器,所以调度的spark on yarn的模式发生数据倾斜的可能性会比spark standalone会小一些;

spark standalone模式的执行流程

都是有一个主节点和多个节点组成,
在spark standalone模式中
主:master
从:woeker
任务提交流程
1.spark-submit提交给master
2.master将接收到的任务通多LaunchDriver向worker请求启动Driver
3.worker接收到请求之后启动Driver
4.Driver启动后向master注册(用户App的信息)
5.master接收到App信息后根据资源情况向worker发送launchExecuter启动Executer
6.worker收到master的请求后启动响应的executer
7.Executer启动后负责与Driver通信,执行相关任务

spark on yarn模式的 执行流程

也是一个主节点个多个节点组成,
在spark on yarn模式中
主:Resource Manager
从:Node Manager
任务提交流程:
1.有spark-submit向Resource Manager提交请求,并将jar包上传到hdfs上,
2.Applications Manager向Scheduler(调度器)申请空余的container(集装箱)
3.Scheduler向Applications Manager返回container(集装箱)的空余情况,Node Manager信息
4.Resource Manager(Applications Manager)根据返回信息向Node Manager申请资源
5.Node Manager会分配一个container,并创建Spark Application Master,此时AppLication Master(Applications Manager)上运行的Spark Driver(每一个Spark Context都会有一个Application Manager)
6.Application Manager启动后和Resource Manager通信,来根据Resource Manager,向Container来申请启动executer
7.Resource Manager(Applications Manager)将申请的资源信息返回给Application Manager
8.Application Manager根据返回的资源信息请求对应的Node Manager分配container来启动executor
9.Node 收到的请求会启动相应的container并启用executeor
11.executor和Application Manager交互完成任务
12.后续的DAGScheduler,TashScheduler,shuffle等操作都是和standalone一样的
13.等到所有的任务执行玩不后,Application Manager向Applications Manager取消注册并释放资源

spark standalone模式的作业提交方式

1.开启spark集群

[root@doit01 spark-2.3.3-bin-hadoop2.7]# sbin/start-all.sh

2.提交jar包的命令

[root@doit01 spark-2.3.3-bin-hadoop2.7]# bin/spark-submit \
--master spark://doit01:7077 \
--executor-memory 1g \
--total-executor-cores 4 \
--class WordCountText \
/root/SparkStreaming-1.0-SNAPSHOT.jar hdfs://doit01:9000/words.txt hdfs://doit01:9000/out123

拓展
假如我们不指定master和executor系统会默认调用我们可用的核,内存,资源全部使用了.

[root@doit01 spark-2.3.3-bin-hadoop2.7]# /usr/apps/spark-2.3.3-bin-hadoop2.7/bin/spark-shell \
--master spark://doit01:7077 (rpc端口用于spark内部master和worker的通信)

spark on yarn模式的作业提交方式

[root@doit01 spark-2.3.3-bin-hadoop2.7]# bin/spark-submit \
--master yarn \
--executor-memory 1g \
--total-executor-cores 4 \
--class WordCountText \
/root/SparkStreaming-1.0-SNAPSHOT.jar hdfs://doit01:9000/words.txt hdfs://doit01:9000/out789

spark启动之后可以jps看进程

spark standalone进程就是SparkSubmit进程

//主节点进程
[root@doit01 sbin]# jps
5426 SparkSubmit
5323 Master
5516 Jps
//次节点进程
[root@doit03 ~]# jps
2369 CoarseGrainedExecutorBackend
2295 Worker
2412 Jps

spark standalone进程就是SparkSubmit进程

//主节点进程
[root@doit01 sbin]# jps
5426 SparkSubmit
5323 Resource Manager
5516 Jps
//次节点进程
[root@doit03 ~]# jps
2369 CoarseGrainedExecutorBackend
2295 Node Manager
2412 Jps
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值