public SystemConstants.MapJobsStatus checkMapPhaseStatus(int taskID) {
		TaskMetaData task = Collections.list(this.reducerTasks.get(taskID).keys()).get(0);

		if (task == null) {
			return SystemConstants.MapJobsStatus.INPROGRESS;
		}

		JobInfo job = this.jobs.get(task.getJobID());

		if (job == null || job.getJobStatus() == SystemConstants.JobStatus.FAILED) {
			return SystemConstants.MapJobsStatus.FAILED;
		}

		List<TaskProgress> mapTasksProgress = Collections.list(job.getProgressofallTasks().elements());
		for (TaskProgress mtaskProgress : mapTasksProgress) {
			
			if (this.mapperTasks.containsKey(mtaskProgress.getTaskID()) && 
					!Collections.list(this.mapperTasks.get(mtaskProgress.getTaskID()).keys()).get(0).isTaskDone()){
				return SystemConstants.MapJobsStatus.INPROGRESS;
			}
			
		}

		// if all map tasks finished, then return FINISHED
		return SystemConstants.MapJobsStatus.SUCCEEDED;
	}