Spark任务部署模式
Local Mode(本地模式):常用于本地开发和测试。
Standalone Mode(集群单机模式):Spark框架自带了完整的资源管理框架管理服务,不需要依赖其他系统提供资源管理调度服务。这种方式降低了和其他第三方资源框架的耦合性,但是Spark主要是作为计算框架,而不是资源调度框架。
YARN Mode(YARN模式):Spark On YARN模式。即将Spark作为客户端,将作业交于YARN运行;资源管理和调度依赖YARN,分布式存储依赖于HDFS。
Mesos Mode(Mesos模式):Mesos是一种资源调度框架。Spark On Mesos,是官方推荐的一种模式,Mesos负责调度Spark需要的各种资源。
任务运行模式与流程
Standalone
standalone-client
提交命令
./spark-submit \
--master spark://node1:端口号 \ # 指定master节点的地址及端口号
--deploy-mode client \ # 指定运行模式
-- executor-memory 1G \ # 指定每个executor可用内存大小为1G
--class xxx.jar \ # 指定需要运行的主类
10 # 设置当前应用的任务数
执行流程
- client模式提交后,会在客户端启动driver进程;
- driver会向Master申请启动Application启动的资源;
- Master收到请求后会在对应的Worker节点上启动Executor;
- Executor启动后,会注册给Driver端,Driver掌握一批计算资源;
- Driver端将task发送到Worker端执行。Worker将task执行结果返回到Driver端。
standalone-cluster
提交命令
./spark-submit \
--master spark://node1:端口号 \ # 指定master节点的地址及端口号
--deploy-mode cluster\ # 指定运行模式
-- executor-memory 1G \ # 指定每个executor可用内存大小为1G
--class xxx.jar \ # 指定需要运行的主类
10 # 设置当前应用的任务数
运行流程
- cluster模式提交应用后,向Master请求启动Driver;
- Master接受请求,随机在集群一台节点启动Driver进程;
- Driver启动后为当前应用程序申请资源;
- Driver端发送task到Worker节点上执行;
- Worker端将结果返回给Driver端。
cluster与client模式的区别,cluster会在随机一台woker节点开启driver进程,客户端无法查看task的执行情况,可以很好的应对流量激增的问题。
Spark On YARN
YARN-client
提交命令
./spark-submit \
--master yarn \ # 指定master节点部署模式
--deploy-mode client \ # 指定运行模式
--class xxxx.jar \ # 指点运行jar包
100
执行流程
- 客户端提交一个application,在客户端启动一个Driver进程;
- 应用程序启动后回想ResourceManager发送请求,启动ApplicationMaster的资源;
- ResourceManager收到请求,随机启动一台WorkerNode启动ApplicationMaster;
- ApplicationMaster启动后,会向ResourceManager请求一批container资源,用于启动Executor;
- ResourceManager会找到一批NodeManager返回给ApplicationManager,用于启动Executor;
- ApplicationMaster会向Node Manager发送命令启动Executor;
- Executor启动后,反向注册给Driver,Driver发送task到Executor,执行情况和结果返回给Driver端。
YARN-clustor
与client区别是driver随机启动在任意一台NM(与AM在一台机器)