  A MapReduce algorithm can be described by a mapping schema, which assigns
inputs to a set of reducers, such that for each required output there exists a
reducer that receives all the inputs that participate in the computation of
this output. Reducers have a capacity, which limits the sets of inputs that
they can be assigned. However, individual inputs may vary in terms of size. We
consider, for the first time, mapping schemas where input sizes are part of the
considerations and restrictions. One of the significant parameters to optimize
in any MapReduce job is communication cost between the map and reduce phases.
The communication cost can be optimized by minimizing the number of copies of
inputs sent to the reducers. The communication cost is closely related to the
number of reducers of constrained capacity that are used to accommodate
appropriately the inputs, so that the requirement of how the inputs must meet
in a reducer is satisfied. In this work, we consider a family of problems where
it is required that each input meets with each other input in at least one
reducer. We also consider a slightly different family of problems in which,
each input of a set, X, is required to meet each input of another set, Y, in at
least one reducer. We prove that finding an optimal mapping schema for these
families of problem is NP-hard, and present several approximation algorithms
for finding a near optimal mapping schema.
