code: public void initTasks() throws IOException {
      // log job info
      jobHistory.logSubmitted(jobFile.toString(), this.startTime, this.jobTrackerId);
      // log the job priority
      JobClient.RawSplit[] splits = null;
      splits = JobClient.getAndRemoveCachedSplits(jobId);
      if (splits == null) {
        FileSystem fs = jobFile.getFileSystem(jobConf);
        Path splitFile = new Path(jobFile.getParent(), "job.split");
        LOG.info("Reading splits from " + splitFile);
        DataInputStream splitFileIn = fs.open(splitFile);
        try {
          splits = JobClient.readSplitFile(splitFileIn);
        } finally {
          splitFileIn.close();
        }
      }
      initTasksFromSplits(splits);
      jobHistory.logInited(this.launchTime,
                           numMapTasks, numReduceTasks);
    }
docs: Read input splits and create a map per split.