Stage生成Task

一、stage 的处理过程

1、从下图可以看出stage是通过递归的形式,从开始依次提交每个stage,直到ResultStage。

2、生成task的主要代码

3、提交到taskScheduler

4、

二、每个stage生成的task的个数

从以上的几幅图不难发现task的数量其实只与rdd的partition的数量是一致的,所以每个stage的Task的个数其实早就已经确定。

而通过追踪 sc.textFile 这个方法得到partition是由core数和最小值2所确定的(如下图)。当然其他的RDD有不同的设定,但是可以知道的

是partition的数量在stage之前就确定,也就是说task的数量其实早已经确定。

Task的具体情况,下次继续分解。

时间: 2024-10-04 09:14:46

Stage生成Task的相关文章

【Spark】Stage生成和Stage源码浅析

引入 上一篇文章<DAGScheduler源码浅析>中,介绍了handleJobSubmitted函数,它作为生成finalStage的重要函数存在,这一篇文章中,我将就DAGScheduler生成Stage过程继续学习,同时介绍Stage的相关源码. Stage生成 Stage的调度是由DAGScheduler完成的.由RDD的有向无环图DAG切分出了Stage的有向无环图DAG.Stage的DAG通过最后执行的Stage为根进行广度优先遍历,遍历到最开始执行的Stage执行,如果提交的St

【Spark】Stage生成和Stage源代码浅析

引入 上一篇文章<DAGScheduler源代码浅析>中,介绍了handleJobSubmitted函数,它作为生成finalStage的重要函数存在.这一篇文章中,我将就DAGScheduler生成Stage过程继续学习,同一时候介绍Stage的相关源代码. Stage生成 Stage的调度是由DAGScheduler完毕的.由RDD的有向无环图DAG切分出了Stage的有向无环图DAG.Stage的DAG通过最后运行的Stage为根进行广度优先遍历,遍历到最開始运行的Stage运行.假设提

Spark Application、Driver、Job、stage、task

1.Application application(应用)其实就是用spark-submit提交的程序.一个application通常包含三部分:从数据源(比方说HDFS)取数据形成RDD,通过RDD的transformation和action进行计算,将结果输出到console或者外部存储. 2.Driver Spark中的driver感觉其实和yarn中Application Master的功能相类似.主要完成任务的调度以及和executor和cluster manager进行协调.有cli

【Spark Core】TaskScheduler源码与任务提交原理浅析2

引言 上一节<TaskScheduler源码与任务提交原理浅析1>介绍了TaskScheduler的创建过程,在这一节中,我将承接<Stage生成和Stage源码浅析>中的submitMissingTasks函数继续介绍task的创建和分发工作. DAGScheduler中的submitMissingTasks函数 如果一个Stage的所有的parent stage都已经计算完成或者存在于cache中,那么他会调用submitMissingTasks来提交该Stage所包含的Tas

【Spark Core】TaskScheduler源代码与任务提交原理浅析2

引言 上一节<TaskScheduler源代码与任务提交原理浅析1>介绍了TaskScheduler的创建过程,在这一节中,我将承接<Stage生成和Stage源代码浅析>中的submitMissingTasks函数继续介绍task的创建和分发工作. DAGScheduler中的submitMissingTasks函数 假设一个Stage的全部的parent stage都已经计算完毕或者存在于cache中.那么他会调用submitMissingTasks来提交该Stage所包括的T

Spark中的Shuffle机制

Spark中的shuffle是在干嘛? Shuffle在Spark中即是把父RDD中的KV对按照Key重新分区,从而得到一个新的RDD.也就是说原本同属于父RDD同一个分区的数据需要进入到子RDD的不同的分区. 但这只是shuffle的过程,却不是shuffle的原因.为何需要shuffle呢? Shuffle和Stage 在分布式计算框架中,比如map-reduce,数据本地化是一个很重要的考虑,即计算需要被分发到数据所在的位置,从而减少数据的移动,提高运行效率. Map-Reduce的输入数

大数据:Spark Core(二)Driver上的Task的生成、分配、调度

1. 什么是Task? 在前面的章节里描述过几个角色,Driver(Client),Master,Worker(Executor),Driver会提交Application到Master进行Worker上的Executor上的调度,显然这些都不是Task. Spark上的几个关系可以这样理解: Application: Application是Driver在构建SparkContent的上下文的时候创建的,就像申报员,现在要构建一个能完成任务的集群,需要申报的是这次需要多少个Executor(可

第三十四课 Spark中任务处理的Stage划分和Task最佳位置算法

本节课的内容 1.     Job Stage的划分算法 2.     Task最佳计算位置算法 一.Stage划分算法 由于Spark的算子构建一般都是链式的,这就涉及了要如何进行这些链式计算,Spark的策略是对这些算子,鲜花分Stage,然后在进行计算. 由于数据是分布式的存储在各个节点上的,所以为了减少网络传输的开销,就必须最大化的追求数据本地性,所谓的数据本地性是指,在计算时,数据本身已经在内存中或者利用已有缓存无需计算的方式获取数据. 1.      Stage划分算法思想 (1)一

task分配算法核心原理描述

把stage生成的每个task创建一个taskset对象 双重for循环,遍历所有taskset,以及每种本地化级别 本地化级别有: 1.process_local:进程本地化RDD的partition和task进入同一个executor中,速度最快 2.node_local:RDD的partition和task不在一个executor上,但是在一个worker上 3.NO_PERF:没有所谓的本地化级别 4.RACK_LOCAL:机架本地化,至少RDD的partition和task在一个机架上