Apache REEF: Retainable Evaluator Execution Framework
- Byung-Gon Chun ,
- Tyson Condie ,
- Yingda Chen ,
- Brian Cho ,
- Andrew Chung ,
- Carlo Curino ,
- Chris Douglas ,
- Beomyeol Jeon ,
- Joo Seong Jeong ,
- Gyewon Lee ,
- Yunseong Lee ,
- Tony Majestro ,
- Dahlia Malkhi ,
- Sergiy Matusevych ,
- Brandon Myers ,
- Mariia Mykhailova ,
- Shravan Narayanamurthy ,
- Joseph Noor ,
- Raghu Ramakrishnan ,
- Sriram Rao ,
- Russell Sears ,
- Beysim Sezgin ,
- Taegeon Um ,
- Julia Wang ,
- Youngseok Yang ,
- Raghu Ramakrishnan ,
- Carlo Curino ,
- Matteo Interlandi
ACM Transactions on Computer Systems | , Vol 35(2): pp. 5
Resource Managers like YARN and Mesos have emerged as a critical layer in the cloud computing system stack, but the developer abstractions for leasing cluster resources and instantiating application logic are very low level. This flexibility comes at a high cost in terms of developer effort, as each application must repeatedly tackle the same challenges (e.g., fault tolerance, task scheduling and coordination) and reimplement common mechanisms (e.g., caching, bulk-data transfers). This article presents REEF, a development framework that provides a control plane for scheduling and coordinating task-level (data-plane) work on cluster resources obtained from a Resource Manager. REEF provides mechanisms that facilitate resource reuse for data caching and state management abstractions that greatly ease the development of elastic data processing pipelines on cloud platforms that support a Resource Manager service. We illustrate the power of REEF by showing applications built atop: a distributed shell application, a machine-learning framework, a distributed in-memory caching system, and a port of the CORFU system. REEF is currently an Apache top-level project that has attracted contributors from several institutions and it is being used to develop several commercial offerings such as the Azure Stream Analytics service.