private void runMRTask()

in odps-console-mr/src/main/java/com/aliyun/openservices/odps/console/mapreduce/runtime/MapReduceJob.java [182:276]


  private void runMRTask() throws OdpsException, ODPSConsoleException {
    StringBuffer cmd = new StringBuffer("java");

    // cmd.append(" -Dodps.access.id=").append(str(context.getAccessId()));
    // cmd.append(" -Dodps.access.key=").append(str(context.getAccessKey()));
    // cmd.append(" -Dodps.refresh.token=").append(str(context.getRefreshToken()));
    cmd.append(" -Dodps.project.name=").append(str(context.getProjectName()));
    cmd.append(" -Dodps.end.point=").append(str(context.getEndpoint()));

    if (context.getLogViewHost() != null) {
      cmd.append(" -Dodps.logview.host=").append(str(context.getLogViewHost()));
    }
    
    if (mrCmd.getResources() != null && !mrCmd.getResources().trim().equals("")) {
      cmd.append(" -Dodps.cache.resources=" + mrCmd.getResources());
    }
    if (mrCmd.getLibjars() != null && !mrCmd.getLibjars().trim().equals("")) {
      cmd.append(" -Dodps.classpath.resources=" + mrCmd.getLibjars());
    }
    if (mrCmd.getJvmOptions() != null) {
      for (String jvmOpt : mrCmd.getJvmOptions()) {
        cmd.append(" " + jvmOpt);
      }
    }
    if (mrCmd.isLocalMode()) {
      cmd.append(" -Dodps.runner.mode=local");
    }
    if (mrCmd.isCostMode()) {
      cmd.append(" -Dcost=true");
    }
    if (!mrCmd.getConf().isEmpty()) {
      cmd.append(" -Dodps.mr.job.conf=" + mrCmd.getConf());
    }

    switch (context.getAccountProvider()) {
      case ALIYUN:
        cmd.append(" -Dodps.account.provider=aliyun");
        break;
      case STS:
        cmd.append(" -Dodps.account.provider=sts");
        cmd.append(" -Dodps.sts.token=").append(str(context.getStsToken()));
        break;
      default:
        throw new ODPSConsoleException(ODPSConsoleConstants.UNSUPPORTED_ACCOUNT_PROVIDER);
    }

    cmd.append(" -Dodps.access.id=").append(str(context.getAccessId()));
    cmd.append(" -Dodps.access.key=").append(str(context.getAccessKey()));
    cmd.append(" -Dodps.app.access.id=").append(str(context.getAppAccessId()));
    cmd.append(" -Dodps.app.access.key=").append(str(context.getAppAccessKey()));

    cmd.append(" -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog");
    cmd.append(" -Dorg.apache.commons.logging.simplelog.log.org.apache.http=WARN");

    String fileName = System.getProperty("java.io.tmpdir") + System.getProperty("file.separator")
        + "tmp_mr_" + System.currentTimeMillis() + "_" + getPID() + ".json";

    if (writeConfig(fileName)) {
      cmd.append(" -Dodps.exec.context.file=").append(fileName);
    }

    String sep = System.getProperty("path.separator");

    String classpath = "";
    String clt_classpath = System.getProperty("java.class.path");
    if (!StringUtils.isEmpty(clt_classpath)) {
      classpath += (classpath.isEmpty() ? "" : sep) + clt_classpath;
    }
    if (!StringUtils.isEmpty(mrCmd.getClasspath())) {
      classpath += (classpath.isEmpty() ? "" : sep) + mrCmd.getClasspath();
    }
    if (!classpath.isEmpty()) {
      cmd.append(" -classpath " + classpath);
    }

    if (mrCmd.getArgs() != null) {
      cmd.append(" ").append(mrCmd.getArgs());
    }



    try {
      ExecutorResult result = CommandExecutor.run(parseCmd(cmd.toString()), true);
      if (result.getEcode() != 0) {
        throw new ODPSConsoleException("Run job failed.", null, result.getEcode());
      }
    } catch (IOException io) {
      throw new OdpsException("CommandExecutor read stream failed:" + io.getMessage());
    } catch (UserInterruptException ex) {
      throw ex;
    } finally {
      new File(fileName).delete();
    }

  }