<commit_before>---
title: Implementing a Custom Scheduler
---

To run a Heron cluster, you'll need to set up a scheduler that is responsible
for cluster management. Heron currently supports the following schedulers out of the box:

* [Aurora](../../operators/deployment/schedulers/aurora)
* [Local scheduler](../../operators/deployment/schedulers/local)
* [Slurm scheduler](../../operators/deployment/schedulers/slurm)

If you'd like to run Heron on a not-yet-supported system, such as
[Amazon ECS](https://aws.amazon.com/ecs/), you can create your own scheduler
using Heron's spi, as detailed in the
sections below.

Java is currently the only supported language for custom schedulers. This may
change in the future.

## Java Setup

In order to create a custom scheduler, you need to import the `heron-spi`
library into your project.

#### Maven<commit_msg>Update the heron scheduler document (#1241)<commit_after>---
title: Implementing a Custom Scheduler
---

To run a Heron topology, you’ll need to set up a scheduler that is responsible 
for topology management. Note: one scheduler is managing only one topology, 
for the purpose of better isolation. Heron currently supports the following schedulers out of the box:

* [Aurora](../../operators/deployment/schedulers/aurora)
* [Local scheduler](../../operators/deployment/schedulers/local)
* [Slurm scheduler](../../operators/deployment/schedulers/slurm)

If you'd like to run Heron on a not-yet-supported system, such as
[Amazon ECS](https://aws.amazon.com/ecs/), you can create your own scheduler
using Heron's spi, as detailed in the
sections below.

Java is currently the only supported language for custom schedulers. This may
change in the future.

## Java Setup

In order to create a custom scheduler, you need to import the `heron-spi`
library into your project.

#### Maven
{'fraction_non_alphanumeric': 0.09902067464635474, 'fraction_numerical': 0.002176278563656148, 'mean_word_length': 4.269340974212034, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2887067', 'n_tokens_mistral': 538, 'n_tokens_neox': 531, 'n_words': 226}