A Game-Theoretic Approach for Runtime Capacity Allocation in MapReduce