I. Introduction
The development of Social Networking, Mobile Computing, and Internet of Things has generated a large volume of data, which has resulted in creations of various Big Data analytics systems, e.g. Hadoop [1], Spark [2], and Flink [3]. During the computation processes in these systems, data movements occur very frequently between computation nodes in a data centre. An analysis from Facebook shows that, on average, data transmissions take 33% of the whole execution time in MapReduce [4] jobs with reduce phases [5]. Furthermore, some skew effects, e.g. partitioning skew, in MapReduce applications may lead to non-uniformed data distributions between different reducers and consequently prolong the execution times significantly [6].