Briefing Cloudera Knowledge

which the reduce method of a given Reducer can be called?

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.

Explanation:
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 all the mappers are done.
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 will actually use the reduce slots now can’t use
them.
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 will wait for all the
mappers to finish before starting the reducers. A value of 0.0 will start the reducers right away. A
value of 0.5 will 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?