當前位置: 首頁>>代碼示例>>Java>>正文


Java ContainerStatus.getExitStatus方法代碼示例

本文整理匯總了Java中org.apache.hadoop.yarn.api.records.ContainerStatus.getExitStatus方法的典型用法代碼示例。如果您正苦於以下問題:Java ContainerStatus.getExitStatus方法的具體用法?Java ContainerStatus.getExitStatus怎麽用?Java ContainerStatus.getExitStatus使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在org.apache.hadoop.yarn.api.records.ContainerStatus的用法示例。


在下文中一共展示了ContainerStatus.getExitStatus方法的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: ContainerInfo

import org.apache.hadoop.yarn.api.records.ContainerStatus; //導入方法依賴的package包/類
public ContainerInfo(final Context nmContext, final Container container,
     String requestUri, String pathPrefix) {

  this.id = container.getContainerId().toString();
  this.nodeId = nmContext.getNodeId().toString();
  ContainerStatus containerData = container.cloneAndGetContainerStatus();
  this.exitCode = containerData.getExitStatus();
  this.exitStatus =
      (this.exitCode == ContainerExitStatus.INVALID) ?
          "N/A" : String.valueOf(exitCode);
  this.state = container.getContainerState().toString();
  this.diagnostics = containerData.getDiagnostics();
  if (this.diagnostics == null || this.diagnostics.isEmpty()) {
    this.diagnostics = "";
  }

  this.user = container.getUser();
  Resource res = container.getResource();
  if (res != null) {
    this.totalMemoryNeededMB = res.getMemory();
    this.totalVCoresNeeded = res.getVirtualCores();
  }
  this.containerLogsShortLink = ujoin("containerlogs", this.id,
      container.getUser());

  if (requestUri == null) {
    requestUri = "";
  }
  if (pathPrefix == null) {
    pathPrefix = "";
  }
  this.containerLogsLink = join(requestUri, pathPrefix,
      this.containerLogsShortLink);
}
 
開發者ID:naver,項目名稱:hadoop,代碼行數:35,代碼來源:ContainerInfo.java

示例2: setAMContainerCrashedDiagnosticsAndExitStatus

import org.apache.hadoop.yarn.api.records.ContainerStatus; //導入方法依賴的package包/類
private void setAMContainerCrashedDiagnosticsAndExitStatus(
    RMAppAttemptContainerFinishedEvent finishEvent) {
  ContainerStatus status = finishEvent.getContainerStatus();
  String diagnostics = getAMContainerCrashedDiagnostics(finishEvent);
  this.diagnostics.append(diagnostics);
  this.amContainerExitStatus = status.getExitStatus();
}
 
開發者ID:naver,項目名稱:hadoop,代碼行數:8,代碼來源:RMAppAttemptImpl.java

示例3: createContainerFinishedEvent

import org.apache.hadoop.yarn.api.records.ContainerStatus; //導入方法依賴的package包/類
@VisibleForTesting
public TaskAttemptEvent createContainerFinishedEvent(ContainerStatus cont,
    TaskAttemptId attemptID) {
  if (cont.getExitStatus() == ContainerExitStatus.ABORTED
      || cont.getExitStatus() == ContainerExitStatus.PREEMPTED) {
    // killed by framework
    return new TaskAttemptEvent(attemptID,
        TaskAttemptEventType.TA_KILL);
  } else {
    return new TaskAttemptEvent(attemptID,
        TaskAttemptEventType.TA_CONTAINER_COMPLETED);
  }
}
 
開發者ID:naver,項目名稱:hadoop,代碼行數:14,代碼來源:RMContainerAllocator.java

示例4: onContainersCompleted

import org.apache.hadoop.yarn.api.records.ContainerStatus; //導入方法依賴的package包/類
/**
 * handle method for AMRMClientAsync.CallbackHandler container allocation
 *
 * @param status
 *            list of status
 */
private synchronized void onContainersCompleted(List<ContainerStatus> status) {
    Collection<ContainerId> failed = new java.util.LinkedList<ContainerId>();
    for (ContainerStatus s : status) {
        assert (s.getState().equals(ContainerState.COMPLETE));
        int exstatus = s.getExitStatus();
        TaskRecord r = runningTasks.get(s.getContainerId());
        if (r == null)
            continue;
        if (exstatus == ContainerExitStatus.SUCCESS) {
            finishedTasks.add(r);
            runningTasks.remove(s.getContainerId());
        } else {
            try {
                if (exstatus == ContainerExitStatus.class.getField(
                        "KILLED_EXCEEDED_PMEM").getInt(null)) {
                    this.abortJob("[DMLC] Task "
                            + r.taskId
                            + " killed because of exceeding allocated physical memory");
                    return;
                }
                if (exstatus == ContainerExitStatus.class.getField(
                        "KILLED_EXCEEDED_VMEM").getInt(null)) {
                    this.abortJob("[DMLC] Task "
                            + r.taskId
                            + " killed because of exceeding allocated virtual memory");
                    return;
                }
            } catch (Exception e) {
                LOG.warn(e.getMessage());
            }
            LOG.info("[DMLC] Task " + r.taskId + " exited with status "
                     + exstatus + " Diagnostics:"+ s.getDiagnostics());
            failed.add(s.getContainerId());
        }
    }
    //this.handleFailure(failed);
}
 
開發者ID:Intel-bigdata,項目名稱:MXNetOnYARN,代碼行數:44,代碼來源:ApplicationMaster.java

示例5: onContainersCompleted

import org.apache.hadoop.yarn.api.records.ContainerStatus; //導入方法依賴的package包/類
@SuppressWarnings("unchecked")
@Override
public void onContainersCompleted(List<ContainerStatus> completedContainers) {
  LOG.info("Got response from RM for container ask, completedCnt="
      + completedContainers.size());
  for (ContainerStatus containerStatus : completedContainers) {
    LOG.info(appAttemptId + " got container status for containerID="
        + containerStatus.getContainerId() + ", state="
        + containerStatus.getState() + ", exitStatus="
        + containerStatus.getExitStatus() + ", diagnostics="
        + containerStatus.getDiagnostics());

    // non complete containers should not be here
    assert (containerStatus.getState() == ContainerState.COMPLETE);
    // ignore containers we know nothing about - probably from a previous
    // attempt
    if (!launchedContainers.contains(containerStatus.getContainerId())) {
      LOG.info("Ignoring completed status of "
          + containerStatus.getContainerId()
          + "; unknown container(probably launched by previous attempt)");
      continue;
    }

    // increment counters for completed/failed containers
    int exitStatus = containerStatus.getExitStatus();
    if (0 != exitStatus) {
      // container failed
      if (ContainerExitStatus.ABORTED != exitStatus) {
        // shell script failed
        // counts as completed
        completedContainerNum.incrementAndGet();
        failedContainerNum.incrementAndGet();
      } else {
        // container was killed by framework, possibly preempted
        // we should re-try as the container was lost for some reason
        allocatedContainerNum.decrementAndGet();
        requestedContainerNum.decrementAndGet();
        // we do not need to release the container as it would be done
        // by the RM
      }
    } else {
      // nothing to do
      // container completed successfully
      completedContainerNum.incrementAndGet();
      LOG.info("Container completed successfully." + ", containerId="
          + containerStatus.getContainerId());
    }
  }

  // ask for more containers if any failed
  int askCount = args.totalContainerNum - requestedContainerNum.get();
  requestedContainerNum.addAndGet(askCount);

  if (askCount > 0) {
    for (int i = 0; i < askCount; ++i) {
      ContainerRequest containerAsk = setupContainerAskForRM();
      amRMClient.addContainerRequest(containerAsk);
    }
  }

  if (completedContainerNum.get() == args.totalContainerNum) {
    done = true;
  }
}
 
開發者ID:Intel-bigdata,項目名稱:TensorFlowOnYARN,代碼行數:65,代碼來源:ApplicationMaster.java

示例6: onContainersCompleted

import org.apache.hadoop.yarn.api.records.ContainerStatus; //導入方法依賴的package包/類
@SuppressWarnings("unchecked")
@Override
public void onContainersCompleted(List<ContainerStatus> completedContainers) {
  LOG.info("Got response from RM for container ask, completedCnt="
      + completedContainers.size());
  for (ContainerStatus containerStatus : completedContainers) {
    LOG.info(appAttemptID + " got container status for containerID="
        + containerStatus.getContainerId() + ", state="
        + containerStatus.getState() + ", exitStatus="
        + containerStatus.getExitStatus() + ", diagnostics="
        + containerStatus.getDiagnostics());

    // non complete containers should not be here
    assert (containerStatus.getState() == ContainerState.COMPLETE);

    // increment counters for completed/failed containers
    int exitStatus = containerStatus.getExitStatus();
    if (0 != exitStatus) {
      // container failed
      if (ContainerExitStatus.ABORTED != exitStatus) {
        // shell script failed
        // counts as completed
        numCompletedContainers.incrementAndGet();
        numFailedContainers.incrementAndGet();
      } else {
        // container was killed by framework, possibly preempted
        // we should re-try as the container was lost for some reason
        numAllocatedContainers.decrementAndGet();
        numRequestedContainers.decrementAndGet();
        // we do not need to release the container as it would be done
        // by the RM
      }
    } else {
      // nothing to do
      // container completed successfully
      numCompletedContainers.incrementAndGet();
      LOG.info("Container completed successfully." + ", containerId="
          + containerStatus.getContainerId());
    }
    if(timelineClient != null) {
      publishContainerEndEvent(
          timelineClient, containerStatus, domainId, appSubmitterUgi);
    }
  }
  
  // ask for more containers if any failed
  int askCount = numTotalContainers - numRequestedContainers.get();
  numRequestedContainers.addAndGet(askCount);

  if (askCount > 0) {
    for (int i = 0; i < askCount; ++i) {
      ContainerRequest containerAsk = setupContainerAskForRM();
      amRMClient.addContainerRequest(containerAsk);
    }
  }
  
  if (numCompletedContainers.get() == numTotalContainers) {
    done = true;
  }
}
 
開發者ID:naver,項目名稱:hadoop,代碼行數:61,代碼來源:ApplicationMaster.java

示例7: updateQueueWithNodeUpdate

import org.apache.hadoop.yarn.api.records.ContainerStatus; //導入方法依賴的package包/類
private void updateQueueWithNodeUpdate(
        NodeUpdateSchedulerEventWrapper eventWrapper) {
  RMNodeWrapper node = (RMNodeWrapper) eventWrapper.getRMNode();
  List<UpdatedContainerInfo> containerList = node.getContainerUpdates();
  for (UpdatedContainerInfo info : containerList) {
    for (ContainerStatus status : info.getCompletedContainers()) {
      ContainerId containerId = status.getContainerId();
      SchedulerAppReport app = scheduler.getSchedulerAppInfo(
              containerId.getApplicationAttemptId());

      if (app == null) {
        // this happens for the AM container
        // The app have already removed when the NM sends the release
        // information.
        continue;
      }

      String queue =
          appQueueMap.get(containerId.getApplicationAttemptId()
            .getApplicationId());
      int releasedMemory = 0, releasedVCores = 0;
      if (status.getExitStatus() == ContainerExitStatus.SUCCESS) {
        for (RMContainer rmc : app.getLiveContainers()) {
          if (rmc.getContainerId() == containerId) {
            releasedMemory += rmc.getContainer().getResource().getMemory();
            releasedVCores += rmc.getContainer()
                    .getResource().getVirtualCores();
            break;
          }
        }
      } else if (status.getExitStatus() == ContainerExitStatus.ABORTED) {
        if (preemptionContainerMap.containsKey(containerId)) {
          Resource preResource = preemptionContainerMap.get(containerId);
          releasedMemory += preResource.getMemory();
          releasedVCores += preResource.getVirtualCores();
          preemptionContainerMap.remove(containerId);
        }
      }
      // update queue counters
      updateQueueMetrics(queue, releasedMemory, releasedVCores);
    }
  }
}
 
開發者ID:naver,項目名稱:hadoop,代碼行數:44,代碼來源:ResourceSchedulerWrapper.java


注:本文中的org.apache.hadoop.yarn.api.records.ContainerStatus.getExitStatus方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。