Spark的Stage划分:如果当前计算因子的输入值是确定的,则从为同一个Stage,如果当前的输入因子不是确定的,则划分为另一个Stage,即,如果输入的数据是不确定的,则将此处前面的计算进行分开,后面的从现在开始为一个Stage,如果后面的计算因子中也有这种模式则也需要进行划分
stage划分
- Application:Spark Application的概念和hadoop MapReduce中类似,指的用户编写的Spark应用程序,包含了一个Driver功能的代码和分布在集群中的多个节点上运行的Executor代码
- Driver:Spark中的Driver即运行上述Application的main函数并创建SparkContext,其中创建SparkContext是为Spark程序准备环境。在Spark中,SparkContext负责与ClusterManager进行通讯,进行资源的申请、任务分配和监控等,当Executor执行完毕后,Driver负责将SparkContext进行关闭,通常SparkContext就代表Driver
- Executor:Application运行在worker上的一个进程,该进程负责运行Task,并将任务的数据写入内存或磁盘中,每个Application都有一批独立的一批Executor。在Spark on YARN模式中,其进程名为CoarseGrainedExecutorBackend,类似于Hadoop中的YarnChild。一个CoarseGrainedExecutorBackend有且仅有一个Executor对象。它负责将Task打包成TaskRunner,并在线程池中取出一个空闲线程来运行Task。每个CoarseGrainedExecutorBackend能并行运行Task的数量就取决于分配给它的CPU数量。
- Cluster Manager:集群上获取资源的外部服务
- Standalone:Spark原生的资源管理器,由Master进行资源分配
- Hadoop YARN:由Hadoop的Resources Manager来进行资源分配
- Worker:集群中任何可以运行Application代码的节点,类似于YARN中的Node Manager在Standalone模式下,指的是Slave文件中指定的Worker节点列表,在Spark on YARN模式下,指的是Node Manager节点。
- 作业(Job):包含多个Task组成的并行计算,往往由Spark Action(执行操作)进行催生,一个Job包含多个RDD及作用于响应RDD上的各种Operation。
- 阶段(Stage):每个Job会被拆分很多组的Task,每组任务被称为Stage,也叫做TaskSet,一个作业分为多个阶段。
- 任务(Task):被发送到Executor的工作任务。
- DAGScheduler:DAGScheduler把Spark作业转换成Stage的DAG(有向无环图),根据RDD和Stage之间找出开销最小的调度方式。












网友评论