by [@zhang2013benchmarking], but different in terms of the underlying system, workloads used and the experimental approach. It includes running generic benchmarks on the target cluster multiple times with various configurations. For brevity, we assume that the network is stable, no node failure and a non-shared environment and therefore we have configured YARN to use the FIFO [@vavilapalli2013apache] scheduling algorithm. For each phase of MapReduce, data is collected from the corresponding YARN logs on the cluster.

$$BM_{i} = (D_i, M_{sel_i}, B_{size_i})
\label{eq:genericbm}$$

Each generic benchmark has the following parameters: $D_i$ is the size of the input dataset, $M_{sel}$ represents the map selectivity and $B_{size}$ represents the block-size. For each profiling step, we vary $D_i$ to read data size ranging from 500MB to 5GB with an interval of at most 500MB. This parameter mainly profiles the read phase. We use $M_{sel}$ to parameterise map selectivity which is the ratio of map input to the map output. It is the amount of data that proceeds to the later stages of the MapReduce pipeline. For each input data size we vary the $M_{sel}$ from 10% to 100% using 10% interval.

This parameter affects the collect, spill, merge and shuffle phases. We also vary $B_{size}$ 