浅谈Spark运行模式

本文主要讲述Spark应用的几种部署模式:Local,Standalone以及On Yarn

1.Spark运行模式

Spark主要有四种运行模式:
- Local[N]:本地多线程模式
- Standalone:Spark自带的独立模式,需要提前启动Master和Slave的服务
- On yarn:提交到Yarn上运行 支持yarn-cluster和yarn-client
- On Mesos:支持粗粒度模式(Coarse-grained Mode)和细粒度模式(Fine-grained Mode)的资源分配

2.Local 本地模式

     Local[N]模式:用单机的多个线程来模拟Spark分布式计算。其中N代表可以使用N个线程。该模式下只会启动一个java进程:SparkSubmit进程,N个线程执行在该进程中。
提交应用的方式为:
spark-submit --master local[2] --name test_johnn --class cn.wpeace.wordcount.WordCount spark-exemple-1.0-SNAPSHOT.jar hdfs://bdphdp02/johnnwang/wordcount.txt
     这里的SparkSubmit进程是客户提交任务的Client进程、又是Spark的driver程序、还充当着Spark执行Task的Executor角色
     本地模式还存在一种伪集群运行模式spark-submit --master local-cluster[x,y,z] 其中x代表要生成的executor数,y和z分别代表每个executor所拥有的core和memory数。该模式下SparkSubmit进程依然又是Client进程,又是driver程序。
同时会运行相应的executor进程:CoarseGrainedExecutorBackend。

3.Standalone模式:

     Spark自带的Masetr/Slave的部署模式,可以单独部署在一个集群中,需要配置Master和Slave。在部署应用时需要预先启动master和workers服务。如./start-all.sh脚本。
会启动相应的master 和 worker进程。
提交应用的方式为:
spark-submit --master spark://10.255.8.43:7077 --name test_johnn
--class cn.wpeace.wordcount.WordCount spark-exemple-1.0-SNAPSHOT.jar hdfs://bdphdp02/johnnwang/wordcount.txt

Client模式下会启动的进程:
- Master进程做为cluster manager,用来对应用程序申请的资源进行管理,以及接收Client提交的作业
- Worker:Standalone模式中slave节点上的守护进程,负责管理本节点的资源,定期向Master汇报心跳,接收Master的命令,启动Executor。
- SparkSubmit: 做为Client端和运行driver程序
- CoarseGrainedExecutorBackend: 接收和运行Task的Executor的执行进程

cluster模式下会启动的进程:--deploy-mode cluster
- Master:基本一样,区别:Master会在集群中选择一个Worker进程生成一个子进程DriverWrapper来启动driver程序
- Worker:定期向Master汇报心跳,接收Master的命令,启动Driver和Executor
- SparkSubmit:进程会在应用程序提交给集群之后选择退出
- DriverWrapper:即Driver进程,作业的主进程,负责作业的解析、生成Stage并调度Task到Executor上
- CoarseGrainedExecutorBackend:与上面类似

4.On Yarn模式:

     Spark的应用可以提交到Yarn上进行运行,YARN来做为Spark的Cluster Manager,来为Spark的应用程序分配资源。在Yarn上运行spark的时候,每个executor相当于一个yarn在Yarn上运行spark的时候,每个executor相当于一个yarn container。Mapreduce是先获得一个container,然后再为每个计算任务启动一个独立的JVM。而spark是在一个container里执行多个计算任务,这样可以大量的节省计算任务的启动时间。
Yarn Client模式:
     Client的提交方式为:
spark-submit --master yarn --name test_johnn --class cn.wpeace.wordcount.WordCount
spark-exemple-1.0-SNAPSHOT.jar hdfs://bdphdp02/johnnwang/wordcount/wordcount.txt

     在yarn-client模式中生成的SparkSubmit进程会执行driver程序。application master只是用来申请yarn container给executor,后续有client(driver)来和这些container(executor:CoarseGrainedExecutorBackend)通信来协调他们的工作。如下图:
00
Yarn Cluster模式:
     cluster的提交方式为:
spark-submit --master yarn --deploy-mode cluster --name test_johnn --class cn.wpeace.wordcount.WordCount spark-exemple-1.0-SNAPSHOT.jar hdfs://bdphdp02/johnnwang/wordcount/wordcount.txt
     在Yarn Cluster模式中生成的SparkSubmit进程只用来启动YarnClient来提交应用到ResourceManager,客户端提交给ResourceManager的每一个应用都会在集群的worker节点上分配一个唯一的ApplicationMaster,由该ApplicationMaster管理全生命周期的应用。CoarseGrainedExecutorBackend进程启动在Container中用于执行Task并和Driver进行通信。如下图:
01

5.Standalone和Yarn部署对比

     整体对比如下表所示:
02

参考链接:

[1]http://dongxicheng.org/framework-on-yarn/apache-spark-comparing-three-deploying-ways/
[2]http://www.cnblogs.com/shenh062326/p/3658543.html

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

标签:

分享到:

扫一扫在手机阅读

扫一扫 在手机阅读、分享本文

上一篇: 下一篇:

还没有评论,快来抢沙发!

电子邮件地址不会被公开。 必填项已用*标注

loading

johnnwang

人生得意须尽欢,莫使金樽空对月。