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

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

Introduction

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

Prototype

@Public
@Stable
public abstract void setFinalApplicationStatus(FinalApplicationStatus finalState);

Source Link

Document

Set the final state of the ApplicationMaster

Usage

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

License:Apache License

@Ignore
@Test/* w  w w .j av a2 s .  c  o m*/
public void testUnmanagedAM() throws Exception {

    new InlineAM(conf) {
        @Override
        @SuppressWarnings("SleepWhileInLoop")
        public void runAM(ApplicationAttemptId attemptId) throws Exception {
            LOG.debug("AM running {}", attemptId);

            //AMRMClient amRmClient = new AMRMClientImpl(attemptId);
            //amRmClient.init(conf);
            //amRmClient.start();

            YarnClientHelper yarnClient = new YarnClientHelper(conf);
            ApplicationMasterProtocol resourceManager = yarnClient.connectToRM();

            // register with the RM (LAUNCHED -> RUNNING)
            RegisterApplicationMasterRequest appMasterRequest = Records
                    .newRecord(RegisterApplicationMasterRequest.class);
            resourceManager.registerApplicationMaster(appMasterRequest);

            // AM specific logic

            /*
            int containerCount = 1;
            Resource capability = Records.newRecord(Resource.class);
            capability.setMemory(1500);
                    
            Priority priority = Records.newRecord(Priority.class);
            priority.setPriority(10);
                    
            String[] hosts = {"vm1"};
            String[] racks = {"somerack"};
                    
            AMRMClient.ContainerRequest req = new AMRMClient.ContainerRequest(capability, hosts, racks, priority, containerCount);
            amRmClient.addContainerRequest(req);
                    
            for (int i=0; i<100; i++) {
              AllocateResponse ar = amRmClient.allocate(0);
              Thread.sleep(1000);
              LOG.debug("allocateResponse: {}" , ar);
            }
            */

            int responseId = 0;
            AllocateRequest req = Records.newRecord(AllocateRequest.class);
            req.setResponseId(responseId++);

            List<ResourceRequest> lr = Lists.newArrayList();
            lr.add(setupContainerAskForRM("hdev-vm", 1, 128, 10));
            lr.add(setupContainerAskForRM("/default-rack", 1, 128, 10));
            lr.add(setupContainerAskForRM("*", 1, 128, 10));

            req.setAskList(lr);

            LOG.info("Requesting: " + req.getAskList());
            resourceManager.allocate(req);

            for (int i = 0; i < 100; i++) {
                req = Records.newRecord(AllocateRequest.class);
                req.setResponseId(responseId++);

                AllocateResponse ar = resourceManager.allocate(req);
                sleep(1000);
                LOG.debug("allocateResponse: {}", ar);
            }

            // unregister from RM
            FinishApplicationMasterRequest finishReq = Records.newRecord(FinishApplicationMasterRequest.class);
            finishReq.setFinalApplicationStatus(FinalApplicationStatus.SUCCEEDED);
            finishReq.setDiagnostics("testUnmanagedAM finished");
            resourceManager.finishApplicationMaster(finishReq);

        }

        private ResourceRequest setupContainerAskForRM(String resourceName, int numContainers,
                int containerMemory, int priority) {
            ResourceRequest request = Records.newRecord(ResourceRequest.class);

            // setup requirements for hosts
            // whether a particular rack/host is needed
            // Refer to apis under org.apache.hadoop.net for more
            // details on how to get figure out rack/host mapping.
            // using * as any host will do for the distributed shell app
            request.setResourceName(resourceName);

            // set no. of containers needed
            request.setNumContainers(numContainers);

            // set the priority for the request
            Priority pri = Records.newRecord(Priority.class);
            pri.setPriority(priority);
            request.setPriority(pri);

            // Set up resource type requirements
            // For now, only memory is supported so we set memory requirements
            Resource capability = Records.newRecord(Resource.class);
            capability.setMemory(containerMemory);
            request.setCapability(capability);

            return request;
        }

    }.run();

}

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;
        }//w  ww  .  j  av a 2s  .c  o  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.apache.hama.bsp.BSPApplicationMaster.java

License:Apache License

private void cleanup() throws YarnException, IOException {
    syncServer.stop();/*from  w  w w.  ja  v  a  2 s  . c o m*/

    if (threadPool != null && !threadPool.isShutdown()) {
        threadPool.shutdownNow();
    }

    clientServer.stop();
    taskServer.stop();
    FinishApplicationMasterRequest finishReq = Records.newRecord(FinishApplicationMasterRequest.class);
    switch (job.getState()) {
    case SUCCESS:
        finishReq.setFinalApplicationStatus(FinalApplicationStatus.SUCCEEDED);
        break;
    case KILLED:
        finishReq.setFinalApplicationStatus(FinalApplicationStatus.KILLED);
        break;
    case FAILED:
        finishReq.setFinalApplicationStatus(FinalApplicationStatus.FAILED);
        break;
    default:
        finishReq.setFinalApplicationStatus(FinalApplicationStatus.FAILED);
    }
    this.amrmRPC.finishApplicationMaster(finishReq);
}

From source file:org.apache.tajo.master.rm.YarnTajoResourceManager.java

License:Apache License

@Override
public void stopQueryMaster(QueryId queryId) {
    try {/* w  w  w . j  a  v  a 2 s.  c o  m*/
        FinalApplicationStatus appStatus = FinalApplicationStatus.UNDEFINED;
        QueryInProgress queryInProgress = masterContext.getQueryJobManager().getQueryInProgress(queryId);
        if (queryInProgress == null) {
            return;
        }
        TajoProtos.QueryState state = queryInProgress.getQueryInfo().getQueryState();
        if (state == TajoProtos.QueryState.QUERY_SUCCEEDED) {
            appStatus = FinalApplicationStatus.SUCCEEDED;
        } else if (state == TajoProtos.QueryState.QUERY_FAILED || state == TajoProtos.QueryState.QUERY_ERROR) {
            appStatus = FinalApplicationStatus.FAILED;
        } else if (state == TajoProtos.QueryState.QUERY_ERROR) {
            appStatus = FinalApplicationStatus.FAILED;
        }
        FinishApplicationMasterRequest request = recordFactory
                .newRecordInstance(FinishApplicationMasterRequest.class);
        request.setFinalApplicationStatus(appStatus);
        request.setDiagnostics("QueryMaster shutdown by TajoMaster.");
        rmClient.finishApplicationMaster(request);
    } catch (Exception e) {
        LOG.error(e.getMessage(), e);
    }
}

From source file:org.springframework.yarn.am.AbstractAppmaster.java

License:Apache License

/**
 * Finish appmaster by sending request to resource manager. Default
 * application status is {@code FinalApplicationStatus.SUCCEEDED} which
 * can be changed using method {@link #setFinalApplicationStatus(FinalApplicationStatus)}.
 *
 * @return the finish application master response
 *///w  w  w .ja  v a 2s.  c  o m
protected FinishApplicationMasterResponse finishAppmaster() {

    boolean clean = getResourceLocalizer().clean();
    log.info("Status of resource localizer clean operation is " + clean);

    // starting from 2.1.x applicationAttemptId is part of the token and
    // doesn't exist in finish request. We still keep it around as per
    // old concept.
    Assert.notNull(applicationAttemptId, "applicationAttemptId must be set");
    if (!applicationRegistered) {
        log.warn("Not sending finish request because we're not registered");
        return null;
    }

    FinishApplicationMasterRequest finishReq = Records.newRecord(FinishApplicationMasterRequest.class);
    // assume succeed if not set
    FinalApplicationStatus status = finalApplicationStatus != null ? finalApplicationStatus
            : FinalApplicationStatus.SUCCEEDED;

    if (log.isDebugEnabled()) {
        log.debug("Sending finish request to resource manager. Current applicationAttemptId="
                + applicationAttemptId + " with status=" + status);
    }

    finishReq.setFinalApplicationStatus(status);
    return rmTemplate.finish(finishReq);
}