使用 dask 分布式集群,我注意到,一些长时间运行的任务的 future 从 pending
切换到 finished
,其他任务从 pending 切换
到丢失
。
我怀疑一些丢失的
任务仍在运行,因为我看到dask-worker
进程的CPU使用率很高,即使没有 future 状态不再是pending
。
这里lost
到底是什么意思?长时间运行的任务(小时)是否可以归类为丢失
,因为它们可能会阻止工作人员向调度程序报告?还有什么可能导致状态丢失
以及调度程序对此有何 react ?
最佳答案
这意味着由于某种原因调度程序不再拥有执行此任务所需的信息。通常,这是由于工作线程宕机导致非弹性数据丢失,例如,如果您将一段数据显式分散到单个工作线程,然后该工作线程失败。
>>> future = client.scatter(123)
>>> x = client.submit(f, future)
... worker holding future/123 dies
>>> x.status
'lost'
不过,这种情况一般很少见。通常,如果工作人员出现故障,调度程序可以在其他地方复制特定任务的所有工作。
一如既往,提供 minimal complete verifiable example可以帮助您隔离特定情况下发生的情况。
关于python-2.7 - 什么会导致 dask 分布式 future 的状态为 'lost' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53361062/