Hierarchial Workload Allocation for Distributed Systems