Example usage for org.apache.hadoop.yarn.api.records FinalApplicationStatus SUCCEEDED

List of usage examples for org.apache.hadoop.yarn.api.records FinalApplicationStatus SUCCEEDED

Introduction

In this page you can find the example usage for org.apache.hadoop.yarn.api.records FinalApplicationStatus SUCCEEDED.

Prototype

FinalApplicationStatus SUCCEEDED

To view the source code for org.apache.hadoop.yarn.api.records FinalApplicationStatus SUCCEEDED.

Click Source Link

Document

Application which finished successfully.

Usage

From source file:com.cfets.door.yarn.jboss.JBossClient.java

License:Apache License

/**
 * Monitor the submitted application for completion. Kill application if
 * time expires./*from  w  w  w.jav  a 2 s  .  co  m*/
 * 
 * @param appId
 *            Application Id of application to be monitored
 * @return true if application completed successfully
 * @throws YarnException
 * @throws IOException
 */
private boolean monitorApplication(ApplicationId appId) throws YarnException, IOException {

    while (true) {

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            LOG.finest("Thread sleep in monitoring loop interrupted");
        }

        ApplicationReport report = yarnClient.getApplicationReport(appId);

        LOG.info("Got application report from ASM for" + ", appId=" + appId.getId() + ", clientToAMToken="
                + report.getClientToAMToken() + ", appDiagnostics=" + report.getDiagnostics()
                + ", appMasterHost=" + report.getHost() + ", appQueue=" + report.getQueue()
                + ", appMasterRpcPort=" + report.getRpcPort() + ", appStartTime=" + report.getStartTime()
                + ", yarnAppState=" + report.getYarnApplicationState().toString() + ", distributedFinalState="
                + report.getFinalApplicationStatus().toString() + ", appTrackingUrl=" + report.getTrackingUrl()
                + ", appUser=" + report.getUser());

        YarnApplicationState state = report.getYarnApplicationState();
        FinalApplicationStatus jbossStatus = report.getFinalApplicationStatus();
        if (YarnApplicationState.FINISHED == state) {
            if (FinalApplicationStatus.SUCCEEDED == jbossStatus) {
                LOG.info("Application has completed successfully. Breaking monitoring loop");
                return true;
            } else {
                LOG.info("Application did finished unsuccessfully." + " YarnState=" + state.toString()
                        + ", JBASFinalStatus=" + jbossStatus.toString() + ". Breaking monitoring loop");
                return false;
            }
        } else if (YarnApplicationState.KILLED == state || YarnApplicationState.FAILED == state) {
            LOG.info("Application did not finish." + " YarnState=" + state.toString() + ", JBASFinalStatus="
                    + jbossStatus.toString() + ". Breaking monitoring loop");
            return false;
        }
    }
}

From source file:com.cloudera.branchreduce.impl.thrift.Client.java

License:Open Source License

@Override
public int handle(YarnClientService clientService) throws Exception {
    clientService.startAndWait();//ww  w .j a  v  a2 s  .c om
    if (!clientService.isRunning()) {
        LOG.error("BranchReduce job did not start, exiting...");
        return 1;
    }

    Lord.Client client = null;
    while (clientService.isRunning()) {
        ApplicationReport report = clientService.getApplicationReport();
        if (report.getYarnApplicationState() == YarnApplicationState.RUNNING) {
            String originalTrackingUrl = report.getOriginalTrackingUrl();
            if (originalTrackingUrl != null && originalTrackingUrl.contains(":")) {
                System.out.println("Original Tracking URL = " + originalTrackingUrl);
                String[] pieces = originalTrackingUrl.split(":");
                TSocket socket = new TSocket(pieces[0], Integer.valueOf(pieces[1]));
                TProtocol protocol = new TBinaryProtocol(socket);
                client = new Lord.Client(protocol);
                socket.open();
                break;
            }
        }
    }

    if (client == null) {
        LOG.error("Could not connect to thrift service to get status");
        return 1;
    }

    Configuration conf = clientService.getParameters().getConfiguration();
    Class<GlobalState> globalStatusClass = (Class<GlobalState>) conf
            .getClass(BranchReduceConfig.GLOBAL_STATE_CLASS, GlobalState.class);

    boolean finished = false;
    while (!clientService.isApplicationFinished()) {
        if (!finished) {
            GlobalStatusResponse resp = client.getGlobalStatus(new GlobalStatusRequest());
            this.value = Writables.fromByteBuffer(resp.bufferForGlobalState(), globalStatusClass);
            if (resp.isFinished()) {
                LOG.info("Job finished running.");
                finished = true;
            }
            LOG.info(value);
        }
        Thread.sleep(1000);
    }

    clientService.stopAndWait();
    ApplicationReport report = clientService.getFinalReport();
    if (report.getFinalApplicationStatus() == FinalApplicationStatus.SUCCEEDED) {
        System.out.println("Job complete.");
        System.out.println(value);
        return 0;
    } else {
        System.out.println("Final app state: " + report.getFinalApplicationStatus());
        System.out.println("Last global state:");
        System.out.println(value);
        return 1;
    }
}

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  ww .  j  av a2s  .c  om*/
    }

    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.cloudera.kitten.appmaster.service.ApplicationMasterServiceImpl1.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");
    this.hasRunningContainers = false;

    for (ContainerTracker tracker : trackers) {
        if (tracker.hasRunningContainers()) {
            tracker.kill();/* www  .  j  av  a2  s  . c o  m*/
        }
    }
    FinalApplicationStatus status;
    String message = null;
    if (state() == State.FAILED || totalFailures.get() > parameters.getAllowedFailures()) {
        //TODO: diagnostics
        status = FinalApplicationStatus.FAILED;
        if (throwable != null) {
            message = throwable.getLocalizedMessage();
        }
    } else {
        status = FinalApplicationStatus.SUCCEEDED;
    }
    LOG.info("Sending finish request with status = " + status);
    try {
        resourceManager.unregisterApplicationMaster(status, message, null);
    } catch (Exception e) {
        LOG.error("Error finishing application master", e);
    }
}

From source file:com.cloudera.kitten.appmaster.service.WorkflowService.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");
    this.hasRunningContainers = false;

    for (ContainerTracker tracker : trackers.values()) {
        if (tracker.hasRunningContainers()) {
            tracker.kill();// w  w w . j  ava2 s.  co m
        }
    }
    FinalApplicationStatus status;
    String message = null;
    if (state() == State.FAILED || totalFailures.get() > parameters.getAllowedFailures()) {
        //TODO: diagnostics
        status = FinalApplicationStatus.FAILED;
        if (throwable != null) {
            message = throwable.getLocalizedMessage();
        }
    } else {
        status = FinalApplicationStatus.SUCCEEDED;
    }
    LOG.info("Sending finish request with status = " + status);
    try {
        resourceManager.unregisterApplicationMaster(status, message, null);
    } catch (Exception e) {
        LOG.error("Error finishing application master", e);
    }
}

From source file:com.cloudera.kitten.client.service.YarnClientServiceImpl.java

License:Open Source License

@Override
protected void shutDown() {
    if (finalReport != null) {
        YarnApplicationState state = finalReport.getYarnApplicationState();
        FinalApplicationStatus status = finalReport.getFinalApplicationStatus();
        if (YarnApplicationState.FINISHED == state) {
            if (FinalApplicationStatus.SUCCEEDED == status) {
                LOG.info("Application completed successfully.");
            } else {
                LOG.info("Application finished unsuccessfully." + " State=" + state.toString()
                        + ", FinalStatus=" + status.toString());
            }//  w ww  .j av  a  2  s  .c om
        } else if (YarnApplicationState.KILLED == state || YarnApplicationState.FAILED == state) {
            LOG.info("Application did not complete successfully." + " State=" + state.toString()
                    + ", FinalStatus=" + status.toString());
        }
    } else {
        // Otherwise, we need to kill the application, if it was created.
        if (applicationId != null) {
            LOG.info("Killing application id = " + applicationId);
            KillApplicationRequest request = Records.newRecord(KillApplicationRequest.class);
            request.setApplicationId(applicationId);
            try {
                applicationsManager.forceKillApplication(request);
            } catch (YarnRemoteException e) {
                LOG.error("Exception thrown killing application", e);
            }
            LOG.info("Application was killed.");
        }
    }
}

From source file:com.cloudera.llama.am.yarn.YarnRMConnector.java

License:Apache License

@Override
public void unregister() {
    ugi.doAs(new PrivilegedAction<Void>() {
        @Override//ww  w.  j a v a2 s . co m
        public Void run() {
            _stop(FinalApplicationStatus.SUCCEEDED, "Stopped by AM", false);
            return null;
        }
    });
}

From source file:com.cloudera.llama.am.yarn.YarnRMConnector.java

License:Apache License

private synchronized void _stop(FinalApplicationStatus status, String msg, boolean stopYarnClient) {
    if (containerHandlerExecutor != null) {
        containerHandlerExecutor.shutdownNow();
        containerHandlerExecutor = null;
    }/*  ww  w.  j a  va  2s .  co  m*/
    if (amRmClientAsync != null) {
        LOG.debug("Stopping AM '{}'", appId);
        try {
            amRmClientAsync.unregisterApplicationMaster(status, msg, "");
        } catch (Exception ex) {
            LOG.warn("Error un-registering AM client, " + ex, ex);
        }
        amRmClientAsync.stop();
        amRmClientAsync = null;
    }
    if (stopYarnClient) {
        if (yarnClient != null) {
            try {
                ApplicationReport report = _monitorAppState(yarnClient, appId, STOPPED, true);
                if (report.getFinalApplicationStatus() != FinalApplicationStatus.SUCCEEDED) {
                    LOG.warn("Problem stopping application, final status '{}'",
                            report.getFinalApplicationStatus());
                }
            } catch (Exception ex) {
                LOG.warn("Error stopping application, " + ex, ex);
            }
            yarnClient.stop();
            yarnClient = null;
        }
    }
    if (nmClient != null) {
        //TODO this is introducing a deadlock
        //nmClient.stop();
    }
}

From source file:com.continuuity.weave.internal.appmaster.ApplicationMasterService.java

License:Open Source License

private void doStop() throws Exception {
    Thread.interrupted(); // This is just to clear the interrupt flag

    LOG.info("Stop application master with spec: " + WeaveSpecificationAdapter.create().toJson(weaveSpec));

    instanceChangeExecutor.shutdownNow();

    Set<ContainerId> ids = Sets.newHashSet(runningContainers.getContainerIds());
    runningContainers.stopAll();/*from  w  ww .jav  a 2s.com*/

    int count = 0;
    while (!ids.isEmpty() && count++ < 5) {
        AllocateResponse allocateResponse = amrmClient.allocate(0.0f);
        for (ContainerStatus status : allocateResponse.getAMResponse().getCompletedContainersStatuses()) {
            ids.remove(status.getContainerId());
        }
        TimeUnit.SECONDS.sleep(1);
    }

    amrmClient.unregisterApplicationMaster(FinalApplicationStatus.SUCCEEDED, null, null);
    amrmClient.stop();

    // App location cleanup
    cleanupDir(URI.create(System.getenv(EnvKeys.WEAVE_APP_DIR)));

    // When logger context is stopped, stop the kafka server as well.
    ILoggerFactory loggerFactory = LoggerFactory.getILoggerFactory();
    if (loggerFactory instanceof LoggerContext) {
        ((LoggerContext) loggerFactory).addListener(getLoggerStopListener());
    } else {
        kafkaServer.stopAndWait();
    }
}

From source file:com.continuuity.weave.internal.yarn.Hadoop20YarnAMClient.java

License:Apache License

@Override
protected void shutDown() throws Exception {
    amrmClient.unregisterApplicationMaster(FinalApplicationStatus.SUCCEEDED, null, trackerUrl.toString());
    amrmClient.stop();//from  w ww  .  j a  v a 2s . c om
}