  We present Henge, a system to support intent-based multi-tenancy in modern
stream processing applications. Henge supports multi-tenancy as a first-class
citizen: everyone inside an organization can now submit their stream processing
jobs to a single, shared, consolidated cluster. Additionally, Henge allows each
tenant (job) to specify its own intents (i.e., requirements) as a Service Level
Objective (SLO) that captures latency and/or throughput. In a multi-tenant
cluster, the Henge scheduler adapts continually to meet jobs' SLOs in spite of
limited cluster resources, and under dynamic input workloads. SLOs are soft and
are based on utility functions. Henge continually tracks SLO satisfaction, and
when jobs miss their SLOs, it wisely navigates the state space to perform
resource allocations in real time, maximizing total system utility achieved by
all jobs in the system. Henge is integrated in Apache Storm and we present
experimental results using both production topologies and real datasets.
