<commit_before>---
title: Aurora Cluster
---

Heron supports deployment on [Apache Aurora](http://aurora.apache.org/) out of
the box. You can also run Heron on
a [local scheduler](../local).

## How Heron on Aurora Works

Aurora doesn't have a Heron scheduler *per se*. Instead, when a topology is
submitted to Heron, `heron` cli interacts with Aurora to automatically deploy
all the [components](../../../../concepts/architecture) necessary to [manage
topologies](../../../heron-cli).

## ZooKeeper

To run Heron on Aurora, you'll need to set up a ZooKeeper cluster and configure
Heron to communicate with it. Instructions can be found in [Setting up
ZooKeeper](../../statemanagers/zookeeper).

## Hosting Binaries

To deploy Heron, the Aurora cluster needs access to the
Heron core binary, which can be hosted wherever you'd like, so long as
it's accessible to Aurora (for example in [Amazon
S3](https://aws.amazon.com/s3/) or using a local blob storage solution). You
can download the core binary from github or build it using the instructions
in [Creating a New Heron Release](../../../../developers/compiling#building-a-full-release-package).

Once your Heron binaries are hosted somewhere that is accessible to Aurora, you
should run tests to ensure that Aurora can successfully fetch them.<commit_msg>heron.aurora config documentation for aurora (#966)<commit_after>---
title: Aurora Cluster
---

Heron supports deployment on [Apache Aurora](http://aurora.apache.org/) out of
the box. You can also run Heron on
a [local scheduler](../local).

## How Heron on Aurora Works

Aurora doesn't have a Heron scheduler *per se*. Instead, when a topology is
submitted to Heron, `heron` cli interacts with Aurora to automatically deploy
all the [components](../../../../concepts/architecture) necessary to [manage
topologies](../../../heron-cli).

## ZooKeeper

To run Heron on Aurora, you'll need to set up a ZooKeeper cluster and configure
Heron to communicate with it. Instructions can be found in [Setting up
ZooKeeper](../../statemanagers/zookeeper).

## Hosting Binaries

To deploy Heron, the Aurora cluster needs access to the
Heron core binary, which can be hosted wherever you'd like, so long as
it's accessible to Aurora (for example in [Amazon
S3](https://aws.amazon.com/s3/) or using a local blob storage solution). You
can download the core binary from github or build it using the instructions
in [Creating a New Heron Release](../../../../developers/compiling#building-a-full-release-package).

Command for fetching the binary is in the `heron.aurora` config file. By default it is 
using a `curl` command to fetch the binary. For example, if the binary is hosted in 
HDFS, you need to change the fetch user package command in `heron.aurora` to use the 
`hdfs` command instead of `curl`.

### `heron.aurora` example binary fetch using HDFS

```bash
fetch_heron_system = Process(
  name = 'fetch_heron_system',
  cmdline = 'hdfs dfs -get %s %s && tar zxf %s' % (heron_core_release_uri, 
        core_release_file, core_release_file)
)
```

Once your Heron binaries are hosted somewhere that is accessible to Aurora, you
should run tests to ensure that Aurora can successfully fetch them.

## Uploading the Topologies

Heron uses an uploader to upload the topology to a shared location so that a worker can fetch 
the topology to its sandbox. The configuration for an uploader is in the `uploader.yaml` 
config file. For distributed Aurora deployments, Heron can use `HdfsUploader` or `S3Uploader`. 
Details on configuring the uploaders can be found in the documentation for the 
[HDFS](../../uploaders/hdfs) and [S3](../../uploaders/s3) uploaders. 

After configuring an uploader, the `heron.aurora` config file needs to be modified accordingly to 
fetch the topology. 

### `heron.aurora` example topology fetch using HDFS

```bash
fetch_user_package = Process(
  name = 'fetch_user_package',
  cmdline = 'hdfs dfs -get %s %s && tar zxf %s' % (heron_topology_jar_uri, 
          topology_package_file, topology_package_file)
)
```
{'fraction_non_alphanumeric': 0.09797130133597229, 'fraction_numerical': 0.002474022761009401, 'mean_word_length': 4.0664160401002505, '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': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6015956', 'n_tokens_mistral': 1219, 'n_tokens_neox': 1137, 'n_words': 528}