When is the earliest point at which the reduce method of a given Reducer can be called?
A. As soon as at least one mapper has finished processing its input split.
B. As soon as a mapper has emitted at least one record.
C. Not until all mappers have finished processing all records.
D. It depends on the InputFormat used for the job.
In a MapReduce job reducers do not start executing the reduce method until the all Map jobs
have completed. Reducers start copying intermediate key-value pairs from the mappers as soon
as they are available. The programmer defined reduce method is called only after all the
mappers have finished.
Note: The reduce phase has 3 steps: shuffle, sort, reduce. Shuffle is where the data is collected
by the reducer from each mapper. This can happen while mappers are generating data since it
is only a data transfer. On the other hand, sort and reduce can only start once al the mappers
Why is starting the reducers early a good thing? Because it spreads out the data transfer from
the mappers to the reducers over time, which is a good thing if your network is the bottleneck.
Why is starting the reducers early a bad thing? Because they "hog up" reduce slots while only
copying data. Another job that starts later that wil actually use the reduce slots now can't use
You can customize when the reducers startup by changing the default value of
mapred.reduce.slowstart.completed.maps in mapred-site.xml. A value of 1.00 wil wait for all the
mappers to finish before starting the reducers. A value of 0.0 wil start the reducers right away.
A value of 0.5 wil start the reducers when half of the mappers are complete. You can also
change mapred.reduce.slowstart.completed.maps on a job-by-job basis.
Typically, keep mapred.reduce.slowstart.completed.maps above 0.9 if the system ever has
multiple jobs running at once. This way the job doesn't hog up reducers when they aren't doing
anything but copying data. If you only ever have one job running at a time, doing 0.1 would
probably be appropriate.
Reference: 24 Interview Questions & Answers for Hadoop MapReduce developers, When is the
reducers are started in a MapReduce job?
Which describes how a client reads a file from HDFS?