Example usage for org.apache.hadoop.yarn.api.protocolrecords FinishApplicationMasterRequest getFinalApplicationStatus

List of usage examples for org.apache.hadoop.yarn.api.protocolrecords FinishApplicationMasterRequest getFinalApplicationStatus

Introduction

In this page you can find the example usage for org.apache.hadoop.yarn.api.protocolrecords FinishApplicationMasterRequest getFinalApplicationStatus.

Prototype

@Public
@Stable
public abstract FinalApplicationStatus getFinalApplicationStatus();

Source Link

Document

Get final state of the ApplicationMaster.

Usage

From source file:com.cloudera.kitten.appmaster.service.ApplicationMasterServiceImpl.java

License:Open Source License

@Override
protected void shutDown() {
    // Stop the containers in the case that we're finishing because of a timeout.
    LOG.info("Stopping trackers");
    for (ContainerTracker tracker : containerTrackers) {
        tracker.stopServices();/*from   w  w w.  ja va2  s .  c  o m*/
    }

    FinishApplicationMasterRequest finishReq = Records.newRecord(FinishApplicationMasterRequest.class);
    finishReq.setAppAttemptId(getApplicationAttemptId());
    if (state() == State.FAILED || totalFailures.incrementAndGet() > parameters.getAllowedFailures()) {
        //TODO: diagnostics
        finishReq.setFinishApplicationStatus(FinalApplicationStatus.FAILED);
    } else {
        finishReq.setFinishApplicationStatus(FinalApplicationStatus.SUCCEEDED);
    }
    LOG.info("Sending finish request with status = " + finishReq.getFinalApplicationStatus());
    try {
        resourceManager.finishApplicationMaster(finishReq);
    } catch (YarnRemoteException e) {
        LOG.error("Error finishing application master", e);
    }
}

From source file:com.datatorrent.stram.StreamingAppMasterService.java

License:Apache License

private void finishApplication(FinalApplicationStatus finalStatus, int numTotalContainers)
        throws YarnException, IOException {
    LOG.info("Application completed. Signalling finish to RM");
    FinishApplicationMasterRequest finishReq = Records.newRecord(FinishApplicationMasterRequest.class);
    finishReq.setFinalApplicationStatus(finalStatus);

    if (finalStatus != FinalApplicationStatus.SUCCEEDED) {
        String diagnostics = "Diagnostics." + ", total=" + numTotalContainers + ", completed="
                + numCompletedContainers.get() + ", allocated=" + allocatedContainers.size() + ", failed="
                + numFailedContainers.get();
        if (!StringUtils.isEmpty(dnmgr.shutdownDiagnosticsMessage)) {
            diagnostics += "\n";
            diagnostics += dnmgr.shutdownDiagnosticsMessage;
        }//from   w ww .ja  v  a2  s.co  m
        // YARN-208 - as of 2.0.1-alpha dropped by the RM
        finishReq.setDiagnostics(diagnostics);
        // expected termination of the master process
        // application status and diagnostics message are set above
    }
    LOG.info("diagnostics: " + finishReq.getDiagnostics());
    amRmClient.unregisterApplicationMaster(finishReq.getFinalApplicationStatus(), finishReq.getDiagnostics(),
            null);
}

From source file:org.deeplearning4j.iterativereduce.runtime.yarn.ResourceManagerHandler.java

License:Apache License

public void finishApplication(String diagnostics, FinalApplicationStatus finishState)
        throws YarnRemoteException {

    if (amResourceManager == null)
        throw new IllegalStateException("Cannot finish an application without connecting to resource manager!");

    FinishApplicationMasterRequest request = Records.newRecord(FinishApplicationMasterRequest.class);
    request.setAppAttemptId(appAttemptId);
    request.setDiagnostics(diagnostics);
    request.setFinishApplicationStatus(finishState);

    LOG.info("Sending finish application notification " + ", state=" + request.getFinalApplicationStatus()
            + ", diagnostics=" + request.getDiagnostics());

    amResourceManager.finishApplicationMaster(request);
}