/** * Run the given task asynchronously. */ void runTask(Task task) { JobID jobId = task.getJobID(); boolean isMap = task.isMapTask(); JVMId jvmId = new JVMId(jobId, isMap, taskCounter++); synchronized(this) { taskJvms.put(jvmId.getId(), jvmId); runningTasks.put(jvmId.getId(), task); } TaskRunnable taskRunnable = new TaskRunnable(task, jvmId.getId()); executor.execute(taskRunnable); }
public JvmTask getTask(JvmContext context) { int id = context.jvmId.getId(); synchronized(this) { Task task = runningTasks.get(id); if (task != null) { return new JvmTask(task, false); } else { return new JvmTask(null, true); } } }
public void runChild(JvmEnv env) { try { env.vargs.add(Integer.toString(jvmId.getId())); List<String> wrappedCommand = TaskLog.captureOutAndError(env.setup, env.vargs, env.stdout, env.stderr,
public void runChild(JvmEnv env) { try { env.vargs.add(Integer.toString(jvmId.getId())); //Launch the task controller to run task JVM initalContext.env = env; tracker.getTaskController().launchTaskJVM(initalContext); } catch (IOException ioe) { // do nothing // error and output are appropriately redirected } finally { // handle the exit code shexec = initalContext.shExec; if (shexec == null) { return; } kill(); int exitCode = shexec.getExitCode(); updateOnJvmExit(jvmId, exitCode); LOG.info("JVM : " + jvmId + " exited with exit code " + exitCode + ". Number of tasks it ran: " + numTasksRan); try { // In case of jvm-reuse, //the task jvm cleans up the common workdir for every //task at the beginning of each task in the task JVM. //For the last task, we do it here. if (env.conf.getNumTasksToExecutePerJvm() != 1) { deleteWorkDir(tracker, initalContext.task); } } catch (IOException ie){} } }
vargs.add(String.valueOf(jvmID.getId())); vargs.add("1>" + getTaskLogFile(TaskLog.LogName.STDOUT)); vargs.add("2>" + getTaskLogFile(TaskLog.LogName.STDERR));
vargs.add(String.valueOf(jvmID.getId())); vargs.add("1>" + getTaskLogFile(TaskLog.LogName.STDOUT)); vargs.add("2>" + getTaskLogFile(TaskLog.LogName.STDERR));
vargs.add(String.valueOf(jvmID.getId())); vargs.add("1>" + getTaskLogFile(TaskLog.LogName.STDOUT)); vargs.add("2>" + getTaskLogFile(TaskLog.LogName.STDERR));
public void runChild(JvmEnv env) { initalContext = new TaskControllerContext(); try { env.vargs.add(Integer.toString(jvmId.getId()));
private void configureMocks() { firstReduceStatus = new ReduceTaskStatus(attemptID, 0.0f, 1, TaskStatus.State.RUNNING, "", "RUNNING", "", TaskStatus.Phase.SHUFFLE, new Counters()); firstReduceStatus.addFetchFailedMap(TaskAttemptID.forName(ATTEMPT1_ID)); secondReduceStatus = new ReduceTaskStatus(attemptID, 0.0f, 1, TaskStatus.State.RUNNING, "", "RUNNING", "", TaskStatus.Phase.SORT, new Counters()); secondReduceStatus.addFetchFailedMap(TaskAttemptID.forName(ATTEMPT2_ID)); thirdReduceStatus = new ReduceTaskStatus(attemptID, 0.0f, 1, TaskStatus.State.RUNNING, "", "RUNNING", "", TaskStatus.Phase.REDUCE, new Counters()); when(dispatcher.getEventHandler()).thenReturn(ea); when(appCtx.getEventHandler()).thenReturn(ea); policy = new CheckpointAMPreemptionPolicy(); policy.init(appCtx); listener = new MockTaskAttemptListenerImpl(appCtx, secret, rmHeartbeatHandler, hbHandler, policy); id = new JVMId("foo", 1, true, 1); wid = new WrappedJvmID(id.getJobId(), id.isMap, id.getId()); attemptID = new TaskAttemptID("1", 1, TaskType.MAP, 1, 1); attemptId = TypeConverter.toYarn(attemptID); }