List of usage examples for org.apache.hadoop.yarn.api.records ContainerExitStatus PREEMPTED
int PREEMPTED
To view the source code for org.apache.hadoop.yarn.api.records ContainerExitStatus PREEMPTED.
Click Source Link
From source file:org.elasticsearch.hadoop.yarn.am.EsCluster.java
License:Apache License
public void start() { running = true;/*from w ww . j av a2 s . c om*/ nmRpc.start(); UserGroupInformation.setConfiguration(cfg); log.info(String.format("Allocating Elasticsearch cluster with %d nodes", appConfig.containersToAllocate())); // register requests Resource capability = YarnCompat.resource(cfg, appConfig.containerMem(), appConfig.containerVCores()); Priority prio = Priority.newInstance(appConfig.amPriority()); for (int i = 0; i < appConfig.containersToAllocate(); i++) { // TODO: Add allocation (host/rack rules) - and disable location constraints ContainerRequest req = new ContainerRequest(capability, null, null, prio); amRpc.addContainerRequest(req); } // update status every 5 sec final long heartBeatRate = TimeUnit.SECONDS.toMillis(5); // start the allocation loop // when a new container is allocated, launch it right away int responseId = 0; try { do { AllocateResponse alloc = amRpc.allocate(responseId++); List<Container> currentlyAllocated = alloc.getAllocatedContainers(); for (Container container : currentlyAllocated) { launchContainer(container); allocatedContainers.add(container.getId()); } if (currentlyAllocated.size() > 0) { int needed = appConfig.containersToAllocate() - allocatedContainers.size(); if (needed > 0) { log.info(String.format("%s containers allocated, %s remaining", allocatedContainers.size(), needed)); } else { log.info(String.format("Fully allocated %s containers", allocatedContainers.size())); } } List<ContainerStatus> completed = alloc.getCompletedContainersStatuses(); for (ContainerStatus status : completed) { if (!completedContainers.contains(status.getContainerId())) { ContainerId containerId = status.getContainerId(); completedContainers.add(containerId); boolean containerSuccesful = false; switch (status.getExitStatus()) { case ContainerExitStatus.SUCCESS: log.info(String.format("Container %s finished succesfully...", containerId)); containerSuccesful = true; break; case ContainerExitStatus.ABORTED: log.warn(String.format("Container %s aborted...", containerId)); break; case ContainerExitStatus.DISKS_FAILED: log.warn(String.format("Container %s ran out of disk...", containerId)); break; case ContainerExitStatus.PREEMPTED: log.warn(String.format("Container %s preempted...", containerId)); break; default: log.warn(String.format("Container %s exited with an invalid/unknown exit code...", containerId)); } if (!containerSuccesful) { log.warn("Cluster has not completed succesfully..."); clusterHasFailed = true; running = false; } } } if (completedContainers.size() == appConfig.containersToAllocate()) { running = false; } if (running) { try { Thread.sleep(heartBeatRate); } catch (Exception ex) { throw new EsYarnNmException("Cluster interrupted"); } } } while (running); } finally { log.info("Cluster has completed running..."); try { Thread.sleep(TimeUnit.SECONDS.toMillis(15)); } catch (InterruptedException e) { throw new RuntimeException(e); } close(); } }
From source file:yarnkit.utils.YarnUtils.java
License:Apache License
public static String getContainerExitStatusMessage(@Nonnull ContainerStatus status) { String containerId = status.getContainerId().toString(); final String msg; final int exitStatus = status.getExitStatus(); switch (exitStatus) { case ContainerExitStatus.SUCCESS: { msg = String.format("Container %s finished succesfully", containerId); break;/*from www . j ava 2 s . c o m*/ } case ContainerExitStatus.ABORTED: { msg = String.format("Container %s aborted", containerId); break; } case ContainerExitStatus.DISKS_FAILED: { msg = String.format("Container %s ran out of disk", containerId); break; } case ContainerExitStatus.PREEMPTED: { msg = String.format("Container %s preempted", containerId); break; } case ContainerExitStatus.INVALID: default: { msg = String.format("Container %s exited with an invalid/unknown exit code: %d", containerId, exitStatus); break; } } String diagnostics = status.getDiagnostics(); if (exitStatus == ContainerExitStatus.SUCCESS || Strings.isNullOrEmpty(diagnostics)) { return msg; } else { return msg + "\nDiagnostics: " + diagnostics; } }