假设我在 Spark 中使用推测 = 运行工作true
。
如果一个任务(比如 T1)需要很长时间,Spark 会在另一个执行器上启动任务 T1(比如 T2)的副本,而不会杀死 T1。
现在,如果 T2 也比所有成功完成的任务的中位数花费更多的时间,Spark 会在另一个执行器上启动另一个任务 T3 吗?
如果是,这种新任务的产生是否有任何限制?如果不是,Spark 是否将自己限制为一项并行作业,并无限期地等待其中一项的完成?
假设我在 Spark 中使用推测 = 运行工作true
。
如果一个任务(比如 T1)需要很长时间,Spark 会在另一个执行器上启动任务 T1(比如 T2)的副本,而不会杀死 T1。
现在,如果 T2 也比所有成功完成的任务的中位数花费更多的时间,Spark 会在另一个执行器上启动另一个任务 T3 吗?
如果是,这种新任务的产生是否有任何限制?如果不是,Spark 是否将自己限制为一项并行作业,并无限期地等待其中一项的完成?
火花TaskSetManager
负责该逻辑。在尝试启动可推测任务时,它正在检查最多运行一个原始任务的副本。因此,在您的示例中,它不应该启动 T3,因为将运行 2 个副本。
您可以在此处找到代码的相关部分。