code: public void init(JobConf conf) throws IOException {
      String tracker = conf.get("mapred.job.tracker", "local");
      if ("local".equals(tracker)) {
        this.jobSubmitClient = new LocalJobRunner(conf);
        isJobTrackerInProc = true;
      } else {
        if (tracker.indexOf(":") == -1) {
          // Not a host:port pair.
          // Construct a job tracker in the same process.
          try {
            Class<?> clazz = conf.getClass("mapred.job.tracker.class", null);
            if (clazz != null) {
              Constructor<?> constructor =
                clazz.getDeclaredConstructor(new Class[]{JobConf.class});
              this.jobSubmitClient =
                (JobSubmissionProtocol) constructor.newInstance(conf);
              isJobTrackerInProc = true;
            } else {
              throw new IOException(
                "In-proc job tracker class(mapred.job.tracker.class) not specified");
            }
          } catch (NoSuchMethodException e) {
            throw new IOException("cannot construct local runner", e);
          } catch (InstantiationException e) {
            throw new IOException("cannot construct local runner", e);
          } catch (IllegalAccessException e) {
            throw new IOException("cannot construct local runner", e);
          } catch (InvocationTargetException e) {
            throw new IOException("cannot construct local runner", e);
          } catch (Throwable e) {
            throw new IOException("Unknown exception", e);
          }
        } else {
          this.jobSubmitClient = createRPCProxy(JobTracker.getAddress(conf), conf);
          this.jobSubmitClientIsProxy = true;
        }
      }
    }
docs: Connect to the default {@link JobTracker}.
  The behavior based on the value of mapred.job.tracker:
  a) "local" -> create a {@link LocalJobRunner}
  b) valid host:port pair -> create a RPC proxy to a {@link JobTracker}
  running on that machine.
  c) anything else -> Assume an in-process job tracker will run, require
  mapred.job.tracker.class to be set
  @param conf the job configuration.
  @throws IOException