Dask分布式任务中包含写文件的方法时候,程序挂起不结束的解决方案

标签:#dask##python# 时间:2020/05/08 20:25:14 作者:小木

使用Dask进行分布式处理的时候一个最常见的场景是有很多个文件,每个文件由一个进程处理。每次处理结果保存成新的文件,这种操作经常会遇到一个程序挂起的问题。即程序貌似已经运行结束,即文件都保存完毕,但是程序不停止。或者是运行了很久都没结束,生成的文件总是少了。

经过测试,这种情况很可能是单个进程占用了过多的内存,导致总的内存不足。程序本身并不一定需要很多内存,但是配置的时候为每个进程配置了过多的内存,即设置memory-limit=64GB这种。

实际上这个设置的是每个worker下每个进程的内存占用。如果单台服务器启动了两个worker,每个worker配置了2个进程,不论进程中包含多少个线程,每个进程总的内存就是64G。那么,单台服务器总的内存申请256GB。这种情况很容易让程序挂起。

Dask在这种时候并没有很好的告警。所以需要对这些设置很小心,即worker数尽量设置合理,且单个worker最好不需要过多的内存。

欢迎大家关注DataLearner官方微信,接受最新的AI技术推送