Előzetes / Utólagos műveletek
A Mapper
és a Reducer
osztályban definiálva van egy setup()
és egy cleanup()
művelet, melyek az adott Map/Reduce
task futtatása előtt vagy után kerülnek végrehajtásra.
public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> {
...
protected void setup(Context context) throws IOException, InterruptedException { }
protected void cleanup(Context context) throws IOException, InterruptedException { }
...
}
veszély
Ezek a műveletek pontosan annyiszor futnak le, ahány Map/Reduce task van. Ez egygépes rendszereken nem okoz gondot, de egy rendles klaszteren ez akár a számítógépek száma is lehet.
tanács
A következő trükkel garantálhatjuk, hogy csak egy Reduce task fusson le:
Driver.java
public static void main(String[] args) {
...
Job job = Job.getInstance(conf, "job-name");
job.setNumReduceTasks(1);
...
}