All Projects → twosigma → Cook

twosigma / Cook

Licence: apache-2.0
Fair job scheduler on Kubernetes and Mesos for batch workloads and Spark

Programming Languages

clojure
4091 projects

Projects that are alternatives of or similar to Cook

Sparklens
Qubole Sparklens tool for performance tuning Apache Spark
Stars: ✭ 345 (+9.87%)
Mutual labels:  scheduler, spark, cluster
humpback-center
Humpback Center 主要为 Humpback 平台提供集群容器调度服务,以集群中心角色实现各个 Group 的容器分配管理。
Stars: ✭ 37 (-88.22%)
Mutual labels:  cluster, scheduler
urb-k8s
Kubernetes adapter for Universal Resource Broker
Stars: ✭ 19 (-93.95%)
Mutual labels:  cluster, mesos
container-orchestration
A Benchmark for Container Orchestration Systems
Stars: ✭ 19 (-93.95%)
Mutual labels:  cluster, mesos
Wedatasphere
WeDataSphere is a financial level one-stop open-source suitcase for big data platforms. Currently the source code of Scriptis and Linkis has already been released to the open-source community. WeDataSphere, Big Data Made Easy!
Stars: ✭ 372 (+18.47%)
Mutual labels:  scheduler, spark
Goodreads etl pipeline
An end-to-end GoodReads Data Pipeline for Building Data Lake, Data Warehouse and Analytics Platform.
Stars: ✭ 793 (+152.55%)
Mutual labels:  scheduler, spark
rhythm
Time-based job scheduler for Apache Mesos
Stars: ✭ 30 (-90.45%)
Mutual labels:  scheduler, mesos
Docker practice
Learn and understand Docker technologies, with real DevOps practice!
Stars: ✭ 19,768 (+6195.54%)
Mutual labels:  spark, mesos
fastdata-cluster
Fast Data Cluster (Apache Cassandra, Kafka, Spark, Flink, YARN and HDFS with Vagrant and VirtualBox)
Stars: ✭ 20 (-93.63%)
Mutual labels:  spark, cluster
swordfish
Open-source distribute workflow schedule tools, also support streaming task.
Stars: ✭ 35 (-88.85%)
Mutual labels:  spark, scheduler
Elasticluster
Create clusters of VMs on the cloud and configure them with Ansible.
Stars: ✭ 298 (-5.1%)
Mutual labels:  spark, cluster
mentos
Fresh Python Mesos Scheduler and Executor driver
Stars: ✭ 18 (-94.27%)
Mutual labels:  scheduler, mesos
Sparkmagic
Jupyter magics and kernels for working with remote Spark clusters
Stars: ✭ 954 (+203.82%)
Mutual labels:  spark, cluster
Daskos
Apache Mesos backend for Dask scheduling library
Stars: ✭ 28 (-91.08%)
Mutual labels:  scheduler, mesos
Datafusion
DataFusion has now been donated to the Apache Arrow project
Stars: ✭ 611 (+94.59%)
Mutual labels:  spark, cluster
scheduler
Maintenance fork of Apache Aurora's Scheduler
Stars: ✭ 21 (-93.31%)
Mutual labels:  scheduler, mesos
Dcos
DC/OS - The Datacenter Operating System
Stars: ✭ 2,316 (+637.58%)
Mutual labels:  mesos, cluster
Tensorflowonspark
TensorFlowOnSpark brings TensorFlow programs to Apache Spark clusters.
Stars: ✭ 3,748 (+1093.63%)
Mutual labels:  spark, cluster
rundeck-nomad-plugin
Rundeck plugin running jobs on Nomad cluster.
Stars: ✭ 17 (-94.59%)
Mutual labels:  cluster, scheduler
mesos-framework
A wrapper around the Mesos HTTP APIs for Schedulers and Executors. Write your Mesos framework in pure JavaScript!
Stars: ✭ 61 (-80.57%)
Mutual labels:  scheduler, mesos

Cook Scheduler

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, Java client, Python client, and CLI.

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

Releases

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 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.

Quickstart

Using Google Kubernetes Engine (GKE)

The quickest way to get Cook running locally against GKE is with Vagrant.

  1. Install Vagrant
  2. Install Virtualbox
  3. Clone down this repo
  4. Run GCP_PROJECT_NAME=<gcp_project_name> vagrant up --provider=virtualbox to create the dev environment
  5. Run vagrant ssh to ssh into the dev environment

In your Vagrant dev environment

  1. Run gcloud auth login to login to Google cloud
  2. Run bin/make-gke-test-clusters to create GKE clusters
  3. Run bin/start-datomic.sh to start Datomic (Cook database)
  4. Run lein exec -p datomic/data/seed_k8s_pools.clj $COOK_DATOMIC_URI to seed some Cook pools in the database
  5. Run bin/run-local-kubernetes.sh to start the Cook scheduler
  6. Cook should now be listening locally on port 12321

To test a simple job submission:

  1. Run 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 job
  2. Run cs show <job_uuid> to show the status of your job (it should eventually show Success)

To run automated tests:

  1. Run lein test :all-but-benchmark to run unit tests
  2. Run cd ../integration && pytest -m 'not cli' to run integration tests
  3. Run cd ../integration && pytest -k test_basic_submit -n 0 -s to run a particular integration test

Using Mesos

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/build-docker-image.sh to build the Cook scheduler image
  5. Run ../travis/minimesos up to start Mesos and ZooKeeper using minimesos
  6. Run bin/run-docker.sh to start the Cook scheduler
  7. Cook should now be listening locally on port 12321

Contributing

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

Disclaimer

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].