|
1 | 1 | ---
|
2 | 2 | description: Documentation on how to configure Kubernetes scheduling options for Hopsworks workloads.
|
3 | 3 | ---
|
| 4 | + |
4 | 5 | # Scheduler
|
5 | 6 |
|
6 | 7 | ## Introduction
|
7 | 8 |
|
8 |
| -Hopsworks allows users to configure [Affinity](https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/) and [Priority Classes](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass) when running workloads on Hopsworks, this includes jobs, jupyter notebooks and model deployments. |
| 9 | +Hopsworks allows users to configure some Kubernetes scheduler abstractions, such as [Affinity](https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/) and [Priority Classes](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass). Hopsworks also supports additional scheduling abstractions backed by Kueue. This includes [Queues](https://kueue.sigs.k8s.io/docs/concepts/cluster_queue/), [Cohorts](https://kueue.sigs.k8s.io/docs/concepts/cohort/) and [Topologies](https://kueue.sigs.k8s.io/docs/concepts/topology_aware_scheduling/). All these scheduling abstractions are supported in jobs, jupyter notebooks and model deployments. Kueue abstractions however, are currently not supported for Spark jobs. |
9 | 10 |
|
10 |
| -Hopsworks Admins can control which labels and priority classes can be used the cluster (see [Cluster configuration](#cluster-configuration) section) and by which project (see [Default Project configuration](#default-project-configuration) section) |
| 11 | +Hopsworks Admins can control which labels and priority classes can be used the cluster (see [Cluster configuration](#cluster-configuration) section) and by which project (see [Default Project configuration](#default-project-configuration) section) |
11 | 12 |
|
12 |
| -Within a project, data owners can set defaults for jobs and Jupyter notebooks running within that project (see: [Project defaults](#project-defaults) section). |
| 13 | +Within a project, data owners can set defaults for jobs and Jupyter notebooks running within that project (see: [Project defaults](#project-defaults) section). |
13 | 14 |
|
14 | 15 | ### Node Labels, Node Affinity and Node Anti-Affinity
|
15 | 16 |
|
@@ -44,7 +45,31 @@ Common uses:
|
44 | 45 |
|
45 | 46 | For more information on Priority Classes, you can check the Kubernetes [Priority Classes documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass) page.
|
46 | 47 |
|
47 |
| -## Cluster Configuration |
| 48 | +## Kueue |
| 49 | + |
| 50 | +Hopsworks adds the integration with Kueue to offer more advanced scheduling abstractions such as queues, cohorts and topologies. |
| 51 | + |
| 52 | +For a more detailed view on how Hopsworks uses the Kueue abstractions you can check the [Kueue details](./kueue_details.md) section. |
| 53 | + |
| 54 | +### Queues, Cohorts |
| 55 | + |
| 56 | +Jobs, notebooks and model deployments are submitted to these queues. Hopsworks administrator can define quotas on how many resources a queue can use. Queues can be grouped together in cohorts in order to add the ability to borrow resources from each other when the other queue does not use its resources. |
| 57 | + |
| 58 | +When creating a new job, the user can select a queue for the job in the `Advance configuration -> Scheduler section`. |
| 59 | + |
| 60 | + |
| 61 | + |
| 62 | +### Topologies |
| 63 | + |
| 64 | +The integration of Hopsworks with Kueue, also provides access to the topology abstraction. Topologies can be defined, so that the user can decide for the pods of jobs or model deployments to run somehow grouped together. The user could decide for example, that all pods of a job should run on the same host, because the pods need to transfer a lot of data between each other, and we want to avoid network traffic to lower the latency. |
| 65 | + |
| 66 | +The user can select the topology unit for jobs, notebooks and model deployments in the `Advance configuration -> Scheduler section`. |
| 67 | + |
| 68 | + |
| 69 | + |
| 70 | +## Admin configuration |
| 71 | + |
| 72 | +### Affinity and priority classes |
48 | 73 |
|
49 | 74 | Hopsworks admins can control the affinity labels and priority classes available on the Hopsworks cluster from the `Cluster Settings -> Scheduler` page:
|
50 | 75 |
|
@@ -72,6 +97,12 @@ Hopsworks Cluster can run within a shared Kubernets Cluster. The first configura
|
72 | 97 |
|
73 | 98 | If the roles above are configured properly (default behaviour), admins can only select values from the drop down menu. If the roles are missing, admins would be required to enter them as free text and should be careful about typos. Any typos here will be propagated in the other configuration and use levels leading to errors or missbehaviour when running computation.
|
74 | 99 |
|
| 100 | +### Queues |
| 101 | + |
| 102 | +Every new project gets automatic access to the default Hopsworks queue. An administrator can define the default queue for projects user jobs and system jobs. |
| 103 | + |
| 104 | + |
| 105 | + |
75 | 106 | ## Project Configuration
|
76 | 107 |
|
77 | 108 | Hopsworks admins can configure the labels and priority classes that can be used by default within a project. This will be a subset of the ones configured for Hopsworks.
|
|
0 commit comments