Chronos
Chronos is Airbnb's replacement for cron. It is a distributed and fault-tolerant scheduler that runs on top ofApache Mesos. You can use it to orchestrate jobs. It supports custom Mesos executors as well as the default command executor. Thus by default, Chronos executes sh (on most systems bash) scripts. Chronos can be used to interact with systems such as Hadoop (incl. EMR), even if the Mesos slaves on which execution happens do not have Hadoop installed. Included wrapper scripts allow transfering files and executing them on a remote machine in the background and using asynchronous callbacks to notify Chronos of job completion or failures.
Chronos has a number of advantages over regular cron. It allows you to schedule your jobs using ISO8601repeating interval notation, which enables more flexibility in job scheduling. Chronos also supports the definition of jobs triggered by the completion of other jobs. It supports arbitrarily long dependency chains.
Try out the interactive and personalized tutorial for Chronos.
For questions and discussions around Chronos, please use the Google Group "chronos-scheduler": Chronos Scheduler Group. Also join us on IRC in #mesos on freenode.
- Features
- Running Chronos
- Configuring Chronos
- License
- Contributors
- Video Introduction
- Chronos UI
- API
- Job Management
- Debugging Chronos Jobs
- Notes
- Reporting Bugs
- Appendix
If you get an error while compiling Mesos, please consult the FAQ.
Features
- Web UI
- 8601 Repeating Interval Notation
- Handles dependencies
- Job Stats (e.g. 50th, 75th, 95th and 99th percentile timing, failure/success)
- Fault Tolerance (Hot Master)
- Configurable Retries
- Multiple Workers (i.e. Mesos Slaves)
Running Chronos
We've included some example run scripts, but the basic syntax for launching chronos is:
java -cp chronos.jar --master zk://127.0.0.1:2181/mesos --zk_hosts 127.0.0.1:2181
Please note that you need to have both Mesos and Zookeeper running for this to work!
For more information on configuration options, please see configuring Chronos.
Example Run Scripts
-
Example runit run script
-
Example local run script
Configuring Chronos
For information on configuring chronos, please see docs/CONFIG.md.
License
The use and distribution terms for this software are covered by the Apache 2.0 License (http://www.apache.org/licenses/LICENSE-2.0.html) which can be found in the file LICENSE at the root of this distribution. By using this software in any fashion, you are agreeing to be bound by the terms of this license. You must not remove this notice, or any other, from this software.
Contributors
Video Introduction
- Replacing Cron & Building Scalable Data Pipelines: YouTube
Sample Architecture
Chronos UI
Chronos comes with a UI which can be used to add, delete, list, modify and run jobs. It can also show a graph of job dependencies. The screenshot should give you a good idea of what Chronos can do.


