spodila edited this page Oct 13, 2016 · 12 revisions

Fenzo is a Java library that implements a generic task scheduler for Apache Mesos frameworks. It allows you to optimize the scheduling of tasks by using plugins that implement a variety of optimization strategies. It also facilitates cluster autoscaling, both with a built-in shortfall evaluator and with autoscaling rules you define.

Apache Mesos frameworks match and assign host resources to pending tasks. Fenzo schedules resources to tasks by using a variety of possible scheduling objectives, such as bin packing, balancing across resource abstractions (such as AWS availability zones or data center racks), and resource affinity.

Fenzo can be used to assign resources to tasks on-demand, when you invoke it. Or, alternatively, you can add all pending tasks to Fenzo's task queue and receive callbacks when resources are available and assigned.

Fenzo is not a Mesos Framework

The Fenzo library can be used by Apache Mesos frameworks, however Fenzo is not another framework. Fenzo focuses on scheduling of resources to tasks and on task placement optimizations. Fenzo takes as its input the resource offers that a framework receives from Mesos and the tasks that are given to the framework. The output from Fenzo is a task assignment result that is based on scheduling objectives that you establish with various scheduler plugins. Your framework then can use these assignments to guide it as it launches tasks on the assigned hosts by means of its Mesos driver.

How Fenzo fits in with Mesos and your framework


  • fenzo-core — the core scheduler library for Apache Mesos frameworks
  • fenzo-triggers — utility library for setting up triggers based on cron-style specification