Apache spark 火花投机的新任务有限制吗?

Apache spark 火花投机的新任务有限制吗?,apache-spark,pyspark,speculative-execution,Apache Spark,Pyspark,Speculative Execution,假设我在Spark中运行一个带有推测的作业=true 如果一个任务(比如T1)需要很长时间,Spark会在另一个执行器上启动任务T1的副本,比如T2,而不会终止T1 现在,如果T2也比所有成功完成任务的中位数花费更多的时间,Spark会在另一个执行者上启动另一个任务T3吗 如果是,新任务的生成是否有任何限制?如果否,Spark是否将自身限制为一个并行作业,并无限期地等待其中一个作业的完成?SparkTaskSetManager负责该逻辑。当试图启动一个可推测的任务时,它检查最多有一个原始任务的副

假设我在Spark中运行一个带有推测的作业=
true


如果一个任务(比如T1)需要很长时间,Spark会在另一个执行器上启动任务T1的副本,比如T2,而不会终止T1

现在,如果T2也比所有成功完成任务的中位数花费更多的时间,Spark会在另一个执行者上启动另一个任务T3吗


如果是,新任务的生成是否有任何限制?如果否,Spark是否将自身限制为一个并行作业,并无限期地等待其中一个作业的完成?

Spark
TaskSetManager
负责该逻辑。当试图启动一个可推测的任务时,它检查最多有一个原始任务的副本正在运行。因此,在您的示例中,它不应该启动T3,因为将有2个拷贝在运行


您可以找到代码的相关部分。

感谢您链接到相关代码。我可以找到注释
//只有当最多一个原始任务副本正在运行时,才能启动推测任务。这是否意味着T3将启动(因为T2是原始任务的副本),但它将在T3停止,并且不会启动T4?否,
copiesRunning(index)
在T1运行后将为1,因此如果T2也启动,
copiesRunning(index)
将为2(假设T1仍在运行)然后,
dequeueTaskFromList
函数将不返回任何内容(即
None
)。