Spark部署模式

Posted tiepihetao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark部署模式相关的知识,希望对你有一定的参考价值。

1.1. Spark部署模式

Spark支持多种集群管理器(Cluster Manager),主要为:

 

  1.  Standalone:独立集群模式,Spark原生的简单集群管理器,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统,使用Standalone可以很方便地搭建一个集群;
  2.  Apache Mesos:一个强大的分布式资源管理框架,它允许多种不同的框架部署在其上,包括yarn
  3. Hadoop YARN:统一的资源管理机制,在上面可以运行多套计算框架,如map reducestorm等,根据driver在集群中的位置不同,分为yarn clientyarn cluster

 

实际上,除了上述这些通用的集群管理器外,Spark内部也提供了一些方便用户测试和学习的简单集群部署模式。由于在实际工厂环境下使用的绝大多数的集群管理器是Hadoop YARN,因此我们关注的重点是Hadoop YARN模式下的Spark集群部署。
Spark的运行模式取决于传递给SparkContextMASTER环境变量的值,个别模式还需要辅助的程序接口来配合使用,目前支持的Master字符串及URL包括:
2-1 Spark运行模式配置

Master URL

Meaning

local

在本地运行,只有一个工作进程,无并行计算能力。

local[K]

在本地运行,有K个工作进程,通常设置K为机器的CPU核心数量。

local[*]

在本地运行,工作进程数量等于机器的CPU核心数量。

spark://HOST:PORT

Standalone模式运行,这是Spark自身提供的集群运行模式,默认端口号: 7077。详细文档见:Spark standalone cluster

mesos://HOST:PORT

Mesos集群上运行,Driver进程和Worker进程运行在Mesos集群上,部署模式必须使用固定值:--deploy-mode cluster。详细文档见:MesosClusterDispatcher.

yarn-client

Yarn集群上运行,Driver进程在本地,Executor进程在Yarn集群上,部署模式必须使用固定值:--deploy-mode clientYarn集群地址必须在HADOOP_CONF_DIR or YARN_CONF_DIR变量里定义。

yarn-cluster

Yarn集群上运行,Driver进程在Yarn集群上,Work进程也在Yarn集群上,部署模式必须使用固定值:--deploy-mode clusterYarn集群地址必须在HADOOP_CONF_DIR or YARN_CONF_DIR变量里定义。

 

用户在提交任务给Spark处理时,以下两个参数共同决定了Spark的运行方式。

· master MASTER_URL :决定了Spark任务提交给哪种集群处理。

· deploy-mode DEPLOY_MODE:决定了Driver的运行方式,可选值为Client或者Cluster

 

集群有四个重要组成部分,分别是:

 

  1. Driver:是一个进程,我们编写的Spark应用程序就运行在Driver上,由Driver进程执行;
  2. Master(RM):是一个进程,主要负责资源的调度和分配,并进行集群的监控等职责;
  3. Worker(NM):是一个进程,一个Worker运行在集群中的一台服务器上,主要负责两个职责,一个是用自己的内存存储RDD的某个或某些partition;另一个是启动其他进程和线程(Executor),对RDD上的partition进行并行的处理和计算。
  4.  Executor:是一个进程,一个Worker上可以运行多个ExecutorExecutor通过启动多个线程(task)来执行对RDDpartition进行并行计算,也就是执行我们对RDD定义的例如mapflatMapreduce等算子操作。

 

 

1.1.1. YARN Client模式

技术图片

2-3 YARN Client模式

YARN Client模式下,Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯申请启动ApplicationMaster,随后ResourceManager分配container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的功能相当于一个ExecutorLaucher,只负责向ResourceManager申请Executor内存。

ResourceManager接到ApplicationMaster的资源申请后会分配container,然后ApplicationMaster在资源分配指定的NodeManager上启动Executor进程,Executor进程启动后会向Driver反向注册,Executor全部注册完成后Driver开始执行main函数,之后执行到Action算子时,触发一个job,并根据宽依赖开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。

1.1.2. YARN Cluster模式

技术图片

技术图片

2-4 YARN Cluster模式

YARN Cluster模式下,任务提交后会和ResourceManager通讯申请启动ApplicationMaster,随后ResourceManager分配container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster就是Driver

Driver启动后向ResourceManager申请Executor内存,ResourceManager接到ApplicationMaster的资源申请后会分配container,然后在合适的NodeManager上启动Executor进程,Executor进程启动后会向Driver反向注册,Executor全部注册完成后Driver开始执行main函数,之后执行到Action算子时,触发一个job,并根据宽依赖开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。

 



以上是关于Spark部署模式的主要内容,如果未能解决你的问题,请参考以下文章

spark的四种部署模式对比

Spark部署模式

Spark job 部署模式

Spark 独立部署模式

Spark 集群部署模式概述

Spark Yarn模式部署