code: protected synchronized void scheduleMap(TaskInProgress tip) {
      runningMapTaskStats.add(0.0f);
      runningTaskMapByteProcessingRateStats.add(0.0f);
      if (runningMapCache == null) {
        LOG.warn("Running cache for maps is missing!! "
                 + "Job details are missing.");
        return;
      }
      String[] splitLocations = tip.getSplitLocations();
  
      // Add the TIP to the list of non-local running TIPs
      if (splitLocations.length == 0) {
        nonLocalRunningMaps.add(tip);
        return;
      }
  
      for(String host: splitLocations) {
        Node node = jobtracker.getNode(host);
  
        for (int j = 0; j < maxLevel; ++j) {
          Set<TaskInProgress> hostMaps = runningMapCache.get(node);
          if (hostMaps == null) {
            // create a cache if needed
            hostMaps = new LinkedHashSet<TaskInProgress>();
            runningMapCache.put(node, hostMaps);
          }
          hostMaps.add(tip);
          node = node.getParent();
        }
      }
    }
docs: Adds a map tip to the list of running maps.
  @param tip the tip that needs to be scheduled as running