English

Stage-Level Executor Allocation in Apache Spark with Cost-Performance Trade-offs

Distributed, Parallel, and Cluster Computing 2026-07-13 v1

Abstract

Allocating executors (i.e. compute resources) to distributed processing systems must balance resource costs of scaling-out unnecessarily against artificial, performance-limiting bottlenecks. Naive approaches may allocate executors at the application level, which have predictable costs and performance but are almost guaranteed to be sub-optimal for each of the thousands of diverse, individual stages executed by the application. Users may also have explicit preferences, such as completing an application within a specific time budget while minimizing cost, that existing solutions usually fail to support. We propose a novel method for determining the number of executors per stage in a serverless Apache Spark environment, enabling users to specify their desired cost-performance tradeoff. Our approach trains tree-ensemble models to estimate the run times and costs of a stage as a function of allocated resources. These estimates are then used to recommend resources for each stage individually. We evaluate our approach on TPC-DS and SQLStorm benchmarks and compare it against two baselines. Depending on the user-defined trade-off parameter and setup, our approach achieves approx. 50% cost savings across 103 TPC-DS queries with only a approx. 16% slowdown, and approx. 40.5% on 96 SQLStorm queries at a approx. 29% slowdown.

Cite

@article{arxiv.2607.11415,
  title  = {Stage-Level Executor Allocation in Apache Spark with Cost-Performance Trade-offs},
  author = {Miriam Rateike and Isaac Waweru Wambugu and Celia Cintas and Michael Kaufmann and Ioana Giurgiu and Skyler Speakman},
  journal= {arXiv preprint arXiv:2607.11415},
  year   = {2026}
}