分布式工作人员的Dask工作人员资源
问题描述:
在分布式多处理工作人员中定义工作人员资源(http://distributed.readthedocs.io/en/latest/resources.html)时,是否为所有进程定义了资源池?分布式工作人员的Dask工作人员资源
例如,工人主机上我运行:
dask-worker --nprocs 8 --resources HOST=1
现在,如果我认为需要resources={"HOST":1}
任务(s)没有这样的保证,只有那些机器上的过程中的一个将执行这一任务在特定时刻?
答
resources关键字均匀地应用于所有进程。 全部工人将获得一个单一的HOST
资源。一般来说,对于机构群集上的成熟部署,我建议避免使用--nprocs
关键字,而是分别创建每个dask工作进程;这更明确。
dask-worker scheduler-address:8786 --resources
dask-worker scheduler-address:8786
dask-worker scheduler-address:8786
dask-worker scheduler-address:8786
dask-worker scheduler-address:8786
dask-worker scheduler-address:8786
dask-worker scheduler-address:8786
dask-worker scheduler-address:8786
我明白了......所以在我的例子中,如何确保只有其中一名工作人员执行特定任务?如果我仍然使用nprocs并定义要求HOST:1,那么所有进程将同时运行。另一方面,如果我需要HOST:8那么......它们都不会运行? 对于没有共同保姆的单独过程,同样的问题。 – evilkonrex
资源不限制多次运行任务,它们限制哪些工作人员可以运行哪些任务。上面的示例避免了'--nprocs'应该完全显式化。我建议避免使用'--nprocs'关键字。 – MRocklin
我明白了,我们将从使用--nprocs转移到使用我们自己的流程管理器并明确启动多个流程。 让我再解释一下我的情况。这个想法是,单个主机上的工作进程仍然共享某些资源。因此,当我运行需要主机上所有资源的任务时,该主机上只有一个工作人员可以同时运行。我认为多线程工作者很简单,但是有一个支持多个工作进程的这种情况的功能吗? PS - 我们可以在我们的工人代码中实现一些资源同步,但它变得更复杂 – evilkonrex