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();
}
}