Skip to content
Fair job scheduler on Mesos for batch workloads and Spark
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Creates issue templates (#893) Jun 20, 2018
cli Bumps CLI version (#1088) Feb 27, 2019
executor Release executor version 0.1.13 (#1119) Apr 4, 2019
integration Mark test_cat_binary_file xfail (#1128) Apr 19, 2019
jobclient Snapshot jobclient version Apr 10, 2019
scheduler Add file_url to job instances (#1125) Apr 18, 2019
spark Add docs for extra options in patched Spark for Cook (#946) Aug 31, 2018
travis Adds per-pool job scheduling (#870) Aug 28, 2018
.gitignore Update .gitignore to ignore *.orig files. (#952) Sep 5, 2018
.travis.yml Outgoing/global launch limit (#1038) Dec 11, 2018 Create (#253) Mar 20, 2017
LICENSE Initial commit Sep 11, 2015 Corrects README instructions regarding minimesos (#944) Aug 29, 2018

Cook Scheduler

Build Status Slack Status

Welcome to Two Sigma's Cook Scheduler!

What is Cook?

  • Cook is a powerful batch scheduler, specifically designed to provide a great user experience when there are more jobs to run than your cluster has capacity for.
  • Cook is able to intelligently preempt jobs to ensure that no user ever needs to wait long to get quick answers, while simultaneously helping you to achieve 90%+ utilization for massive workloads.
  • Cook has been battle-hardened to automatically recover after dozens of classes of cluster failures.
  • Cook can act as a Spark scheduler, and it comes with a REST API and Java client.

Core concepts is a good place to start to learn more.


Check the changelog for release info.

Subproject Summary

In this repository, you'll find several subprojects, each of which has its own documentation.

  • scheduler - This is the actual Mesos framework, Cook. It comes with a JSON REST API.
  • jobclient - This is the Java API for Cook, which uses the REST API under the hood.
  • spark - This contains the patch to Spark to enable Cook as a backend.

Please visit the scheduler subproject first to get started.


The quickest way to get Mesos and Cook running locally is with docker and minimesos.

  1. Install docker
  2. Clone down this repo
  3. cd scheduler
  4. Run bin/ to build the Cook scheduler image
  5. Run ../travis/minimesos up to start Mesos and ZooKeeper using minimesos
  6. Run bin/ to start the Cook scheduler
  7. Cook should now be listening locally on port 12321


In order to accept your code contributions, please fill out the appropriate Contributor License Agreement in the cla folder and submit it to


Apache Mesos is a trademark of The Apache Software Foundation. The Apache Software Foundation is not affiliated, endorsed, connected, sponsored or otherwise associated in any way to Two Sigma, Cook, or this website in any manner.

© Two Sigma Open Source, LLC

You can’t perform that action at this time.