public synchronized boolean statusUpdate( TaskAttemptID taskId, TaskStatus taskStatus, JvmContext context) throws IOException, InterruptedException { LOG.info(taskStatus.getStateString()); int taskIndex = mapIds.indexOf(taskId); if (taskIndex >= 0) { // mapping float numTasks = (float) this.numMapTasks; partialMapProgress[taskIndex] = taskStatus.getProgress(); mapCounters[taskIndex] = taskStatus.getCounters(); float partialProgress = 0.0f; for (float f : partialMapProgress) { partialProgress += f; } status.setMapProgress(partialProgress / numTasks); } else { reduceCounters = taskStatus.getCounters(); status.setReduceProgress(taskStatus.getProgress()); } // ignore phase return true; }