3 public class JobClient{
7 public static void runJob(Configuration conf) {
8 Splitter splitter = new Splitter(conf.getInputfile(), conf.getM(), conf.getSeperator());
9 Master master = new Master(conf.getM(), conf.getR(), splitter);
12 System.printString("Split\n");
16 System.printString("Map\n");
17 MapWorker[] mworkers = master.assignMap();
18 for(int i = 0; i < mworkers.length; ++i) {
19 MapWorker mworker = mworkers[i];
20 mworker.setMapreducer(conf.getMapReduce());
25 // register intermediate output from map workers to master
26 System.printString("Mapoutput\n");
27 for(int i = 0; i < mworkers.length; ++i) {
28 for(int j = 0; j < conf.getR(); ++j) {
29 String temp = mworkers[i].outputFile(j);
31 master.addInterOutput(temp);
34 master.setMapFinish(mworkers[i].getID());
36 //assert(master.isMapFinish());
39 System.printString("Reduce\n");
40 ReduceWorker[] rworkers = master.assignReduce();
41 for(int i = 0; i < rworkers.length; ++i) {
42 ReduceWorker rworker = rworkers[i];
43 rworker.setMapreducer(conf.getMapReduce());
48 // merge all the intermediate output from reduce workers to master
49 System.printString("Merge\n");
50 for(int i = 0; i < rworkers.length; ++i) {
51 master.collectROutput(rworkers[i].getOutputFile());
52 master.setReduceFinish(rworkers[i].getID());
54 //assert(master.isReduceFinish());
56 System./*out.println*/printString("Finish! Results are in the output file: " + master.getOutputFile() + "\n");