什么会导致 dask 分布式 future 的状态为 'lost'?
What can cause a dask distributed future to have the state 'lost'?
使用 dask 分布式集群,我注意到,一些长期 运行 任务的未来从 pending
切换到 finished
,其他从 pending
到 lost
。
我怀疑一些 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 可以帮助隔离您的特定情况下发生的事情。
使用 dask 分布式集群,我注意到,一些长期 运行 任务的未来从 pending
切换到 finished
,其他从 pending
到 lost
。
我怀疑一些 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 可以帮助隔离您的特定情况下发生的事情。