RecordReader
This communicates with the InputSplit and converts the data into key-value pairs suitable for the mapper to read.
Combiner
This is an optional phase; it is like a mini reducer. The combiner receives data from the map tasks, works on it, and then passes its output to the reducer phase.
Partitioner
The partitioner decides how many reduced tasks would be used to summarize the data. It also confirms how outputs from combiners are sent to the reducer, and controls the partitioning of keys of the intermediate map outputs.