Spark部署模式
Spark支持三种集群管理器(Cluster Manager),分别为:
- Standalone:独立模式,Spark原声的集群管理器,自带完成的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。
- Apache Mesos:一个强大的分布式资源管理系统,它允许多种不同的框架部署在其上,包括Yarn。
- Hadoop Yarn:统一的资源管理机制,在上面可以运行多套计算框架,如MapReduce、Storm、Spark等。Spark根据Driver在集群中的位置不同,分为Yarn Client和Yarn Cluster两种模式。
实际上,除了上述通用的集群管理器之外,Spark内部也提供了一些方便用户测试和学习的简单集群部署模式。
Spark的运行模式取决于传递给SparkContext的MASTER
环境变量的值,目前支持的Master URL包括:
Master URL | 含义 |
---|---|
local | 在本地运行,只有一个工作进程,无并行计算能力 |
local[K] | 在本地运行,有K个工作进程 |
local[*] | 在本地运行,工作进程数量等于本地机器的CPU核心数 |
spark://HOST:PORT | 以Standalone模式运行,默认端口为7077.详细文档见Spark standalone cluster |
mesos://HOST:PORT | 在Mesos集群上运行,Driver进程和Executor进程运行在Mesos集群上,部署模式(deploy mode)为client模式。详细文档见MesosClusterDispatcher |
yarn-client | 在Yarn集群上运行,Driver进程运行在本地,Executor进程在Yarn集群上,部署模式为client模式。Yarn集群的地址必须在HADOOP_CONF_DIR或YARN_CONF_DIR变量里定义 |
yarn-cluster | 在Yarn集群上运行,Driver进程运行在本地,Executor进程在Yarn集群上,部署模式为cluster模式。Yarn集群的地址必须在HADOOP_CONF_DIR或YARN_CONF_DIR变量里定义 |
用户在提交任务给Spark处理时,以下两个参数共同决定Spark的运行方式:
- --master MASTER_URL:决定任务使用哪种集群处理
- --deploy-mode DEPLOY_MODE:决定Driver的运行方式,可选值为client或cluster
Standalone模式
Standalone集群有四个重要组成部分,分别是:
- Master:是一个进程,主要负责资源的调度和分配,并进行集群的监控等职责。
- Worker:是一个进程,一个Worker运行在集群中的一台服务器上,只要覆辙两个职责:一个是用自己的内存存储RDD的某个或某些分区数据;另一个是启动其他进程和线程,对RDD上的分区进行并行的处理和计算。
- Driver:是一个进程,负责运行用户编写的Spark应用程序。
- Executor:是一个进程,一个Worker可以运行多个Executor,Executor通过启动多个线程来对RDD的分区数据进行并行计算。
Standalone Client模式
image.png在Standalone Client模式下,Driver在任务提交的本地机器上运行,Driver启动后想Master注册应用程序,Master根据资源需求找到内部资源至少可以启动一个Executor的所有Worker,然后在这些Worker之间分配Executor,Worker上的Executor启动后会向Driver反向注册,所有的Executor注册完成后Driver开始执行main函数
Standalone Cluster模式
image.png在Standalone Cluster模式下,任务提交后,Master会找到一个Worker启动Driver进程,Driver启动后向Master注册应用程序,Master根据资源需求找到内部资源至少可以启动一个Executor的所有Worker,然后在这些Worker之间分配Executor,Worker上的Executor启动后会向Driver反向注册,所有的Executor注册完成后Driver开始执行main函数
Yarn模式
Yarn Client模式
image.png在Yarn Client模式下,Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯申请启动ApplicationMaster,随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时ApplicationMaster相当于一个ExecutorLauncher,只负责向ResourceManager申请Executor资源。
ResourceManager接到ApplicationMaster的资源申请后分配Container,然后ApplicationMaster在指定的NodeManager上启动Executor,Executor启动后想Driver反向注册,全部注册完成后Driver开始执行用户程序的main方法。
Yarn Cluster模式
image.png在Yarn Client模式下,任务启动后会和ResourceManager通讯申请启动ApplicationMaster,随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时ApplicationMaster相当于一个Driver。
ResourceManager接到ApplicationMaster的资源申请后分配Container,然后ApplicationMaster在指定的NodeManager上启动Executor,Executor启动后想Driver反向注册,全部注册完成后Driver开始执行用户程序的main方法。
网友评论