private void computeReducerTimeStatsPerJob(RunningJob rj) throws IOException {
    TaskCompletionEvent[] taskCompletions = rj.getTaskCompletionEvents(0);
    List<Integer> reducersRunTimes = new ArrayList<Integer>();

    for (TaskCompletionEvent taskCompletion : taskCompletions) {
      if (!taskCompletion.isMapTask()) {
        reducersRunTimes.add(Integer.valueOf(taskCompletion.getTaskRunTime()));
      }
    }
    // Compute the reducers run time statistics for the job
    ReducerTimeStatsPerJob reducerTimeStatsPerJob = new ReducerTimeStatsPerJob(reducersRunTimes);
    // Adding the reducers run time statistics for the job in the QueryPlan
    this.task.getQueryPlan().getReducerTimeStatsPerJobList().add(reducerTimeStatsPerJob);
    return;
  }
This class contains the state of the running task Going forward, we will return this handle
from execute and Driver can split execute into start, monitorProgess and postProcess.
ql/src/java/org/apache/hadoop/hive/ql/exec/mr/HadoopJobExecHelper.java