Spark应用执行机制

Spark是专门为大规模数据设计的快速通用计算引擎。

Spark应用(Application)为用户提交的应用程序。执行模式有Local(测试),Standalone、Yarn和Mesos。根据Spark Application的Driver Program是否在集群中运行,Spark应用的运行方式又可以分为CustomerCluster模式和Client模式。


Spark涉及的基本概念:

Application:Spark的应用程序,用户提交后,Spark为App分配资源,将程序转换并执行,其中Application包含一个Drive Program和若干个Executor。

Driver Progream: 运行Application的main()函数,并创建SparkContext。

SparkContext:Spark程序的入口,负责调度各个运算资源,协调各个worker Node上的Executor。

RDD Graph:RDD是Spark的核心结构,可以通过一系列算子进行操作(主要有Transformation和Action操作)。当RDD遇到Action算子时,将之前所有的算子形成一个有向无形环(DAG),再在Spark中转化为Job,提交到集群执行。一个App中可以包含多个Job。

Executor:是为Application在Worker Node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘中。每个Application都会申请各自的Executor来处理任务。

Work Node:集群中任何可以运行Application代码的节点,运行一个或多个Executor进程。


Spark组件:

Job:一个RDD Graph触发的作业,往往由Spark Action触发算子,在SparkContext中通过runJob方法想Spark提交Job。

Stage:每个Job会根据RDD的依赖关系被切分为很多歌Stage,每个Stage中会包含一组相投的Task,这一组Task也叫TaskSet

Task:一个分区对应一个Task,Task执行RDD中对应的Stage包含的算子,Task被封装好后放入Exector的线程池中执行。

DAGScheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskSheduler。

TaskScheduler:将TaskSet提交给worker Node集群并返回结果。


Spark执行机制

RDD的Action算子触发Job的提交,提交到Spark中的Job生成的RDD DAG(有向无形环),由



Spark的底层实现

Spark的底层通过RDD对数据进行管理,RDD有一组分布在不同节点的数据块,当Spark的应用在对这个RDD进行操作的时候,调度器将包含操作的任务分发到指定的机器上执行,在计算节点通过多线程的方式执行任务。一个操作执行完毕,RDD便转换到另一个RDD,这样,用户的操作依次执行。Spark为了系统的内存不至于快速用完,使用延迟执行的方法执行,只有操作累积到Action,算子才会触发整个操作序列的执行,中间结果不会单独再重新分配内存,而是在同一个数据块上进行流水线操作。


Spark实现了分布式计算和任务处理,并实现了任务的分发、跟踪、执行等工作,最终聚合结果,完成Spark应用的计算。

对RDD的块管理通过BlockManager完成,BlockManager将数据抽象为数据块,在内存或者磁盘进行存储,如果数据不在本节点,则还可以通过远端节点复制到本机进行计算。

在计算节点的执行器Exector中会创建线程池,这个执行器将需要执行的任务通过线程池进行并发执行。


应用提交和执行方式








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值