Mercury: Hybrid Centralized and Distributed Scheduling in Large Shared Clusters
- Konstantinos Karanasos ,
- Sriram Rao ,
- Carlo Curino ,
- Chris Douglas ,
- Kishore Chaliparambil ,
- Giovanni Matteo Fumarola ,
- Solom Heddaya ,
- Raghu Ramakrishnan ,
- Sarvesh Sakalanaga
USENIX Annual Technical Conference (USENIX ATC'2015) |
Published by USENIX – Advanced Computing Systems Association
Datacenter-scale computing for analytics workloads is increasingly common. High operational costs force heterogeneous applications to share cluster resources for achieving economy of scale. Scheduling such large and diverse workloads is inherently hard, and existing approaches tackle this in two alternative ways: 1) centralized solutions offer strict, secure enforcement of scheduling invariants (e.g., fairness, capacity) for heterogeneous applications, 2) distributed solutions offer scalable, efficient scheduling for homogeneous applications.
We argue that these solutions are complementary, and advocate a blended approach. Concretely, we propose Mercury, a hybrid resource management framework that supports the full spectrum of scheduling, from centralized to distributed. Mercury exposes a programmatic interface that allows applications to trade-off between scheduling overhead and execution guarantees. Our framework harnesses this flexibility by opportunistically utilizing resources to improve task throughput. Experimental results show gains of over 35\% on production-derived workloads. These benefits can be translated by appropriate application and operator policies into job throughput or job latency improvements. We have implemented and are currently open-sourcing Mercury as an extension of Apache Hadoop / YARN.