什么会导致 dask 分布式 future 的状态为 'lost'?

What can cause a dask distributed future to have the state 'lost'?

使用 dask 分布式集群,我注意到,一些长期 运行 任务的未来从 pending 切换到 finished,其他从 pendinglost

我怀疑一些 lost 任务仍然是 运行,因为我看到 dask-worker 进程即使没有 futures 也有很高的 CPU 使用率状态不再是 pending

这里的lost到底是什么意思?长时间 运行 任务(小时)是否可以归类为 lost,因为它们可能会阻止工作人员向调度员报告?还有什么可能导致状态 lost 以及调度程序对此有何反应?

这意味着由于某种原因,调度程序不再具有执行此任务所需的信息。这通常是由于非弹性数据因工作人员宕机而丢失,例如,如果您明确地将一段数据分散给单个工作人员,然后该工作人员出现故障。

>>> future = client.scatter(123)
>>> x = client.submit(f, future)

 ... worker holding future/123 dies

>>> x.status
'lost'

虽然一般情况下这种情况很少见。通常,如果工作人员宕机,调度程序可以在其他地方复制特定任务的所有工作。

一如既往,提供 minimal complete verifiable example 可以帮助隔离您的特定情况下发生的事情。