Spark的运行模式

一、目前Spark最为常用户的运行模式有四种:

1)local:本地线程方式运行,主要用于开发调试Spark应用程序;

2)Standalone:利用Spark自带的资源管理与调度器运行Spark集群,采用Master/Slave结构。若想避免单点故障可以采用ZooKeeper实现高可靠性(High Availiabilty);

3)Mesos:Apache著名的资源管理框架Mesos,该集群运行模式将资源管理交给Mesos,Spark只负责任务调度与计算;

4)YARN:Hadoop资源管理器Yarn,资源管理交给Yarn而Spark只负责任务调度与计算部分。技术较为成熟、最为常用,Spark与Hadoop生态圈的完美结合,组成强大的集群,较为流行

二、Spark应用程序执行过程中的术语

Term(术语)

Meaning(解释)

Application
(
应用程序)

运行于Spark上的用户程序,由集群上的一个driver program(包含SparkContext对象)和多个executor线程组成

Application jar
(
JAR)

Jar包中包含了用户Spark应用程序,如果Jar包要提交到集群中运行,不需要将其它的Spark依赖包打包进行,在运行时

Driver program

包含main方法的程序,负责创建SparkContext对象

Cluster manager

集群资源管理器,例如MesosHadoop Yarn

Deploy mode

部署模式,用于区别driver program的运行方式:集群模式(cluter mode)driver在集群内部启动;客户端模式(client mode),driver进程从集群外部启动

Worker node

工作节点,集群中可以运行Spark应用程序的节点

Executor

Worker node上的进程,该进程用于执行具体的Spark应用程序任务,负责任务间的数据维护(数据在内存中或磁盘上)。不同的Spark应用程序有不同的Executor

Task

运行于Executor中的任务单元,Spark应用程序最终被划分为经过优化后的多个任务的集合(在下一节中将详细阐述)

Job

由多个任务构建的并行计算任务,具体为Spark中的action操作,如collect,save)

Stage

每个job将被拆分为更小的task集合,这些任务集合被称为stage,各stage相互独立(类似于MapReduce中的map stagereduce stage),由于它由多个task集合构成,因此也称为TaskSet

 各Spark应用程序以相互独立的进程集合运行于集群之上,由SparkContext对象进行协调,SparkContext对象---应用程序的入口,亦被称为Driver Program,SparkContext可以与不同各类的集群资源管理器打交道,比如HadoopYarn、ApacheMesos等等,从而分配进程所需要的资源,获取到集群运行的所需要的资源后SparkContextuqf得到的集群中其它工作节点(WorkerNode)上对应的Executors(不同的Spark应用程序有不同的Excutors,它们之间是独立的进程,Excutor为应用程序提供分布式计算及数据存储功能),之后 SparkContext将应用程序代码分发到各个Executor,最后将任务(Task)分配给Executors执行。

三、SparkJob的运行原理

spark-submit提交Spark应用程序后,其执行流程如下:

1、创建SparkContext对象,然后SparkContext会向Cluster Manager(集群资源管理器,eg:Yarn、Standalone、Mesos等)申请资源;

2、资源管理器在worker node上创建executor并分配资源(CPU、内存等),后期executor会定时向资源管理器发送心跳信息;

3、SparkContext启动DAGScheduler将提交的作业(job)转化成若干Stage,各Stage构成DAG(Directed Acyclic Grapth有向无环图),各个Stage包含若干task,这些task的集合称为TaskSet;

4、TaskSet发送给TaskSet Scheduler,TaskSet Scheduler将Task发送给对应的Executor,同时SparkContext将应用程序代码发送到Executor,从而启动任务的执行;

5、Executor执行Task完成后释放受益人资源;

具体如下图所示:








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值