Spark学习笔记—Spark工作机制

一.Spark执行机制

1.执行机制总览
Spark应用提交后经历一系列转变,最后成为task在各个节点上执行。
Spark应用转换流程
RDD的Action算子触发job的提交,提交到Spark的Job生成RDD DAG,由DAGScheduler转换为Stage DAG,每个Stage中产生相应的Task集合,TaskScheduler将任务分发到Executor执行。每个任务对应的数据块,使用用户定义的函数进行处理。
2.Spark应用的概念
Spark应用(application)是用户提交的应用程序,执行模式有Local,Standalone,YARN,Mesos。根据Application的Driver Program是否在集群中运行又分为Cluster模式和Client模式。包含的组件如下:
Application:用户自定的Spark程序,提交后Spark为App分配资源将程序转换并执行。
Driver Program:运行Application的main()函数并创建SparkContext.
RDD Graph:当RDD遇到Action算子,将之前所有算子形成一个有向无环图DAG,在Spark中转换为Job并提交到集群中处理,一个App可以包含多个Job.
Job:一个RDD Graph触发的作业,在SparkContext中通过runJob方法提交。
Stage:每个Job会根据RDD的宽依赖关系被切分为很多Stage,每个Stage包含一组相同的Task,这一组Task也叫做TaskSet。
Task:一个分区对应一个Task,Task执行RDD中对应Stage中包含的算子。Task被封装好后放入Executor的线程池中执行。
3.应用的提交与执行方式
应用的提交方式分为以下两种:
Driver进程运行在客户端;主节点指定某个Worker节点启动Driver,负责整个应用的监控。
(1).Driver运行在客户端
在这里插入图片描述
流程描述如下:
1.用户启动客户端后,客户端运行程序,启动Driver。在Driver中启动或者实例化DAGScheduler等组件。客户端的Driver向Master注册。
2. Worker向Master注册,Master命令Worker启动Executor。Worker通过创建Executor-Runner线程,在ExecutorRunner线程内部启动ExecutorBackend进程。
3. ExecutorBackend启动后向客户端Driver进程内的SchedulerBackend注册,这样的话Driver进程就找到了计算资源。Driver中的DAGScheduler解析RDD DAG并生成相应的Stage,每个Stage包含的TaskSet通过TaskScheduler分配给Executor。
(2).Driver在Worker中运行
在这里插入图片描述
流程如下:

1.用户启动客户端,客户端提交应用程序给Master.
2.Master调度应用,针对每个应用分发给指定得一个Worker启动Driver,即SchedulerBackend。Worker接受到Master命令后,创建DriverRunner线程,在DriverRunner线程内创建SchedulerBackend进程。Driver是整个作业的主控进程
Master指定其他Worker启动Executor,即ExecutorBackend进程,提供计算资源。流程与上述相似,Worker创建ExecutorRunner线程,ExecutorRunner启动ExecutorBackend进程。
3.ExecutorBackend启动后向Driver的SchedulerBackend注册,这样的Driver就获得了计算资源。SchedulerBackend进程包含DAGScheduler,它会根据RDD的DAG拆分出Stage,生成TaskSet,并调度和分发Task到Executor。每个Stage的TaskSet都会放到TaskScheduler,其将任务分发到Executor。

二.Spark调度与任务分配模块

1.Spark应用程序之间的调度
Executor空间内每个应用是不共享的,一个Executor一个时间段只能分配给一个应用。因此应用程序之间就需要进行资源的调度。
(1).Standalone
默认情况下,采用FIFO (先

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值