【问题标题】:Dask job fails in Jupyter notebook cell with KilledWorker使用 KilledWorker 的 Jupyter 笔记本单元中的 Dask 作业失败
【发布时间】:2022-08-06 21:01:44
【问题描述】:

我正在 Jupyter 笔记本中运行一个连接任务,该任务从 Dask 产生了许多关于可能的内存泄漏的警告,然后最终因被杀死的工作人员错误而失败:

2022-07-26 21:38:05,726 - distributed.worker_memory - WARNING - Worker is at 85% memory usage. Pausing worker.  Process memory: 1.59 GiB -- Worker memory limit: 1.86 GiB
2022-07-26 21:38:06,319 - distributed.worker_memory - WARNING - Unmanaged memory use is high. This may indicate a memory leak or the memory may not be released to the OS; see https://distributed.dask.org/en/latest/worker-memory.html#memory-not-released-back-to-the-os for more information. -- Unmanaged memory: 1.59 GiB -- Worker memory limit: 1.86 GiB
2022-07-26 21:38:07,501 - distributed.worker_memory - WARNING - Worker tcp://127.0.0.1:46137 (pid=538697) exceeded 95% memory budget. Restarting...
2022-07-26 21:38:07,641 - distributed.nanny - WARNING - Restarting worker

KilledWorker: (\"(\'assign-6881b18750807133ba976bf463a98c23\', 0)\", <WorkerState \'tcp://127.0.0.1:46137\', name: 0, status: closed, memory: 0, processing: 50>)

当我在具有 32GB RAM (Kubuntu 20) 的笔记本电脑上运行我的代码时,就会发生这种情况。也许我没有为环境正确配置 Dask?我可以在系统监视器中观察内存使用量的上升和下降,但它绝不会消耗所有内存。我如何告诉 Dask 使用它可以管理的所有内核和尽可能多的内存?它似乎在单处理器模式下运行,可能是因为我在笔记本电脑上运行而不是在适当的集群上运行?

对于上下文:我正在加入两个数据集,它们都是大小为 25GB 和 5GB 的文本文件。这两个文件都已使用dd.read_fwf() 读入 Dask DataFrame 对象,然后我在其中一个帧上转换一个字符串字段,然后在该字段上加入(合并)。

  • dask.distributed 文档有一个 section 解释被杀死的工人的含义。为了提供更多帮助,我们肯定需要查看您的代码。

标签: jupyter-notebook dask


【解决方案1】:

特定工作人员有一定的内存限制,您可以从这里阅读:https://distributed.dask.org/en/stable/worker-memory.html。 除此之外,您可以尝试在初始化 dask 客户端时增加工作程序、线程的数量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 2017-03-03
    • 2020-05-05
    相关资源
    最近更新 更多