code: public synchronized Task obtainNewMapTask(TaskTrackerStatus tts,
                                              int clusterSize,
                                              int numUniqueHosts,
                                              int maxCacheLevel
                                             ) throws IOException {
      if (status.getRunState() != JobStatus.RUNNING) {
        LOG.info("Cannot create task split for " + profile.getJobID());
        return null;
      }
  
      int target = findNewMapTask(tts, clusterSize, numUniqueHosts,
                                  maxCacheLevel);
      if (target == -1) {
        return null;
      }
  
      Task result = maps[target].getTaskToRun(tts.getTrackerName());
      if (result != null) {
        addRunningTaskToTIP(maps[target], result.getTaskID(), tts, true);
      }
  
      return result;
    }
docs: Return a MapTask, if appropriate, to run on the given tasktracker