@article{ThamsenBeilharzVinhThuyTranetal.2020, author = {Thamsen, Lauritz and Beilharz, Jossekin Jakob and Vinh Thuy Tran, and Nedelkoski, Sasho and Kao, Odej}, title = {Mary, Hugo, and Hugo*}, series = {Concurrency and computation : practice \& experience}, volume = {33}, journal = {Concurrency and computation : practice \& experience}, number = {18}, publisher = {Wiley}, address = {Hoboken}, issn = {1532-0626}, doi = {10.1002/cpe.5823}, pages = {12}, year = {2020}, abstract = {Distributed data-parallel processing systems like MapReduce, Spark, and Flink are popular for analyzing large datasets using cluster resources. Resource management systems like YARN or Mesos in turn allow multiple data-parallel processing jobs to share cluster resources in temporary containers. Often, the containers do not isolate resource usage to achieve high degrees of overall resource utilization despite overprovisioning and the often fluctuating utilization of specific jobs. However, some combinations of jobs utilize resources better and interfere less with each other when running on the same shared nodes than others. This article presents an approach for improving the resource utilization and job throughput when scheduling recurring distributed data-parallel processing jobs in shared clusters. The approach is based on reinforcement learning and a measure of co-location goodness to have cluster schedulers learn over time which jobs are best executed together on shared resources. We evaluated this approach over the last years with three prototype schedulers that build on each other: Mary, Hugo, and Hugo*. For the evaluation we used exemplary Flink and Spark jobs from different application domains and clusters of commodity nodes managed by YARN. The results of these experiments show that our approach can increase resource utilization and job throughput significantly.}, language = {en} }