Spark调度系统——Stage详解

DAGScheduler会将Job的RDD划分到不同的Stage,并构建这些Stage的依赖关系。这样可以使得没有依赖关系的Stage并行执行,并保证有依赖关系的Stage顺序执行。并行执行能够有效利用集群资源,提升运行效率,而串行执行则适用于那些在时间和数据资源上存在强制依赖的场景。Stage分为需要处理Shuffle的ShuffleMapStage和最下游的ResultStage。上游Stage先于下游Stage执行,ResultStage是最后执行的Stage。Stage的属性如下:

  • id:Stage的身份标识
  • rdd:当前Stage包含的RDD
  • numTasks:当前Stage的Task数量
  • parents:当前Stage的父Stage列表。说明一个Stage可以有一个到多个父Stage
  • firstJobId:第一个提交当前Stage的Job的身份标识(即Job的id)。当使用FIFO调度时,通过firstJobId首先计算来自较早Job的Stage,或者在发生故障时更快地恢复
  • callSite:应用程序中与当前Stage相关联的调用栈信息
  • numPartitions:当前Stage的分区数量。实际为rdd的分区的数量
  • jobIds:当前Stage所属的Job的身份标识集合。说明一个Stage可以属于一到多个Job
  • pendingPartitions:存储待处理分区的索引的集合
  • nextAttemptId:用于生成Stage下一次尝试的身份标识
  • _latestInfo:Stage最近一次尝试的信息,即StageInfo
  • fetchFailedAttemptIds:发生过FetchFailure的Stage尝试的身份标识的集合。此属性用于避免在发生FetchFailure后无止境的重试

下面来学习一下Stage的方法

  • clearFailures:清空fetchFialedAttemptIds
  • failedOnFetchAndShouldAbort:用于将发生FetchFailure的Stage尝试的身份标识添加到fetchFailedAttemptIds中,并返回发生FetchFailure的次数是否已经超过了允许发生FetchFailure的次数的状态。允许发生FetchFailure的次数固定为4
  • latestInfo:返回最近一次Stage尝试的StageInfo,即返回_latestInfo
  • findMissingPartitions:找到还未执行完成的分区
  • mekeNewStageAttempt:用于创建新的Stage尝试

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值