use of com.continuuity.weave.internal.yarn.ports.AllocationResponse in project weave by continuuity.
the class Hadoop20YarnAMClient method allocate.
@Override
public synchronized void allocate(float progress, AllocateHandler handler) throws Exception {
AllocationResponse response = amrmClient.allocate(progress);
List<ProcessLauncher<YarnContainerInfo>> launchers = Lists.newArrayListWithCapacity(response.getAllocatedContainers().size());
for (Container container : response.getAllocatedContainers()) {
launchers.add(new RunnableProcessLauncher(new Hadoop20YarnContainerInfo(container), nmClient));
}
if (!launchers.isEmpty()) {
handler.acquired(launchers);
// If no process has been launched through the given launcher, return the container.
for (ProcessLauncher<YarnContainerInfo> l : launchers) {
// This cast always works.
RunnableProcessLauncher launcher = (RunnableProcessLauncher) l;
if (!launcher.isLaunched()) {
Container container = launcher.getContainerInfo().getContainer();
LOG.info("Nothing to run in container, releasing it: {}", container);
amrmClient.releaseAssignedContainer(container.getId());
}
}
}
List<YarnContainerStatus> completed = ImmutableList.copyOf(Iterables.transform(response.getCompletedContainersStatuses(), STATUS_TRANSFORM));
if (!completed.isEmpty()) {
handler.completed(completed);
}
}
Aggregations