Languages

Java 8 is used primarily for Heron’s topology
API, and Heron Instance.
It is currently the only language in which topologies can be written. Instructions can be found
in Building Topologies, while documentation for the Java
API can be found here. Please note that Heron topologies do not
require Java 8 and can be written in Java 7 or later.

Main Tools

Build tool — Heron uses Bazel as its build tool.
Information on setting up and using Bazel for Heron can be found in Compiling
Heron.

Inter-component communication — Heron uses Protocol
Buffers for
communication between components. Most .proto definition files can be found in
heron/proto.

Cluster coordination — Heron relies heavily on ZooKeeper for cluster
coordination for distributed deployment, be it for Aurora or for a custom
scheduler that you build. More information on ZooKeeper
components in the codebase can be found in the State
Management section below.

Common Utilities

The heron/common contains a variety of
utilities for each of Heron’s languages, including useful constants, file
utilities, networking interfaces, and more.

Cluster Scheduling

Heron supports two cluster schedulers out of the box:
Aurora and a local
scheduler. The Java code for each of those
schedulers can be found in heron/schedulers
, while the underlying scheduler API can be found here

Simulator

Example Topologies

Heron’s codebase includes a wide variety of example
topologies built using Heron’s topology API for
Java. Those examples can be found in
heron/examples.

User Interface Components

Heron CLI

Heron has a tool called heron that is used to both provide a CLI interface
for managing topologies and to perform much of
the heavy lifting behind assembling physical topologies in your cluster.
The Python code for heron can be found in
heron/tools/cli.

Heron UI

Like Heron Tracker, Heron UI is a web server written in Python that relies on
the Tornado framework. You can add new
HTTP routes to Heron UI in
main.py and corresponding
handlers in the handlers
directory.

Heron Shell

The Python code for the Heron Shell can be
found in heron/shell. The HTTP handlers and
web server are defined in
main.py while the HTML,
JavaScript, CSS, and images for the web UI can be found in the
assets directory.

Tests

There are a wide variety of tests for Heron that are scattered throughout the
codebase. For more info see Testing Heron.