Fair job scheduler on Kubernetes and Mesos for batch workloads and Spark
Cook Scheduler Development Has Ceased
After seven years of developing Cook Scheduler we have made the decision to archive the project. Cook will remain available on GitHub in archive mode but no further development will occur.
When Cook was open sourced it solved difficult problems in on-premises, capacity-constrained data centers. Today, however, the embrace of the public cloud has changed the problems that need to be solved. This shift is also reflected in slowing community contribution to Cook and the emergence of many other open source projects in this space. Given this, it no longer makes sense for us to maintain Cook as an open source project.
We are thankful for the opportunity to have shared Cook with the community and grateful for your contributions. Two Sigma remains committed to supporting open source software. You can find out more about our other projects and contributions here: https://www.twosigma.com/open-source/.
Welcome to Two Sigma’s Cook Scheduler!
What is Cook?
Core concepts is a good place to start to learn more.
Check the changelog for release info.
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 includes the Java and Python APIs for Cook, both of which use 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 Cook running locally against GKE is with Vagrant.
GCP_PROJECT_NAME=<gcp_project_name> PGPASSWORD=<random_string> vagrant up --provider=virtualbox
to create the dev environmentvagrant ssh
to ssh into the dev environmentgcloud auth login
to login to Google cloudbin/make-gke-test-clusters
to create GKE clustersbin/start-datomic.sh
to start Datomic (Cook database) (Wait until “System started datomiclein exec -p datomic/data/seed_k8s_pools.clj $COOK_DATOMIC_URI
to seed some Cook pools in the databasebin/run-local-kubernetes.sh
to start the Cook schedulerTo test a simple job submission:
cs submit --pool k8s-alpha --cpu 0.5 --mem 32 --docker-image gcr.io/google-containers/alpine-with-bash:1.0 ls
to submit a simple jobcs show <job_uuid>
to show the status of your job (it should eventually show Success)To run automated tests:
lein test :all-but-benchmark
to run unit testscd ../integration && pytest -m 'not cli'
to run integration testscd ../integration && pytest tests/cook/test_basic.py -k test_basic_submit -n 0 -s
to run a particular integration testThe quickest way to get Mesos and Cook running locally is with docker and minimesos.
docker
cd scheduler
bin/build-docker-image.sh
to build the Cook scheduler image../travis/minimesos up
to start Mesos and ZooKeeper using minimesosbin/run-docker.sh
to start the Cook schedulerIn order to accept your code contributions, please fill out the appropriate Contributor License Agreement in the cla
folder and submit it to tsos@twosigma.com.
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