dask / dask/dask-jobqueue

Add support for dask-ctl

Open
#544 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
256
Forks
150
PR merge metrics
No merged PRs in 30d

Description

As mentioned in #543 it would be really nice for `dask-jobqueue` to support `dask-ctl` for convenient cluster management. However from what I understand about HPC scheduling systems this may not be a trivial task.

Dask Control aims to allow users to create/list/scale/delete Dask clusters via the CLI and a Python API. Support for `dask-ctl` is implements on a per-cluster manager basis with the following tasks.

- It must be possible to delete a Cluster object without destroying the Dask cluster
- It must be possible to list all running clusters
- It must be possible to create a new instance of the Cluster object that represents an existing cluster

The main challenges here are around moving the state out of the Cluster object into a place that it can be retrieved later. On platforms like Kubernetes or the Cloud much of the state can be serialised into tags/labels on the various tasks, but I'm not sure how many HPC systems support this kind of metadata storage.

The other challenge is how to discover clusters. On Kubernetes for example we set a tag on all resources that marks it as being created by `dask-ctl` and stores an ID that can be used to retrieve the metadata. Again I'm not sure how flexible HPC schedulers are at being able to tag/label jobs with arbitrary metadata.

The last thing that maybe a blocker is that the Dask cluster must always run the scheduler remotely, it cannot be within the local (or login node) Python process. I'm not sure how that affects things here.

I'm keen to see this happen, and if folks have thoughts on how this can be implemented I'd be keen to hear.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.