Difference between Mapside join and Reduceside join?

Mapside join between large input works before the data reaches the map function.
Mapside join happens when file size is small than cache.
Each input must be divided into same no of partitioned and must be sorted by the same key.

Reduceside join happens when file size is greater than cache.
Input data set need not to be structured.
It is less efficient because the dataset have to go through the shuffle phase and in the reducer the same key records are brought together.