Applicationjava
用户编写的Spark应用程序。Application的main方法为应用程序的入口,用户经过Spark的API,定义了RDD和对RDD的操做。编程
Job缓存
提供给Spark运行的做业,一个Application中以Action为划分边界每每会产生多个Job。Spark采用惰性机制,对RDD的建立和转换并不会当即执行,只有在遇到Action时才会生成一个Job,而后统一调度执行。ide
Stage大数据
每一个Job以Shuffle为边界划分出的不一样阶段, 其名称为Stage。Stage有非最终的Stage(Shuffle Map Stage)和最终的Stage(Result Stage)两种。递归
在对Job中的全部操做划分Stage时,通常会按照倒序进行:即从Action开始,遇到窄依赖操做,则划分到同一个执行阶段;遇到宽依赖操做,则划分一个新的执行阶段,且新的阶段为以前阶段的parent,而后依次类推递归执行。child Stage须要等待全部的parent Stage执行完以后才能够执行,这时Stage之间根据依赖关系构成了一个大粒度的DAG。在一个Stage内,全部的操做以串行的Pipeline的方式,由一组Task完成计算。进程
Task图片
真正执行的工做单元,对一个Stage以内的RDD进行串行操做的计算任务。多个Task组成一个Stage。ip
Task分为ShuffleMapTask和ResultTask两种,位于最后一个Stage的Task为ResultTask,其余阶段的属于ShuffleMapTask。资源
Cluster Manager
在集群上获取资源的外部服务。Cluster Manager能够为自带的Standalone、或第三方的Yarn和Mesos。
Cluster Manager通常采用Master-Slave结构。以Yarn为例,部署ResourceManager服务的节点为Master,负责集群中全部计算资源的统一管理和分配;部署NodeManager服务的节点为Slave,负责在当前节点建立一个或多个具有独立计算能力的JVM实例,在Spark中,这些节点也叫作Worker。
Executor
某个Application运行在worker节点上的一个进程, 该进程负责运行某些Task,并将结果返回给Driver,同时为须要缓存的RDD提供存储功能。
Driver
准备Spark应用程序的运行环境,负责执行用户Application中的main方法,提交Job,并将Job转化为Task,在各个Executor进程间协调Task的调度。
Spark有Client和Cluster两种部署模式。Application以Client模式部署时,Driver运行于Client节点;而以Cluster模式部署时,Driver运行于Worker节点,与Executor同样由Cluster Manager启动。
DAGScheduler
根据Job构建DAG图,将Job拆分红多个Stage并提交给TaskScheduler。
TaskScheduler
将Stage拆分红多个Task并提交给worker运行,Executor运行什么Task就是在此处分配的。
忠于技术,热爱分享。欢迎关注公众号:java大数据编程,了解更多技术内容。