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:org.apache.giraph.yarn.GiraphApplicationMaster.java

License:Apache License

/**
 * Call when the application is done/*from  w ww.jav a 2  s. c  om*/
 * @return if all containers succeed
 */
private boolean finish() {
    // When the application completes, it should stop all running containers
    LOG.info("Application completed. Stopping running containers");
    nmClientAsync.stop();

    // When the application completes, it should send a finish application
    // signal to the RM
    LOG.info("Application completed. Signalling finish to RM");
    FinalApplicationStatus appStatus;
    String appMessage = null;
    boolean success = true;
    if (failedCount.get() == 0 && completedCount.get() == containersToLaunch) {
        appStatus = FinalApplicationStatus.SUCCEEDED;
    } else {
        appStatus = FinalApplicationStatus.FAILED;
        appMessage = "Diagnostics." + ", total=" + containersToLaunch + ", completed=" + completedCount.get()
                + ", failed=" + failedCount.get();
        success = false;
    }
    try {
        amRMClient.unregisterApplicationMaster(appStatus, appMessage, null);
    } catch (YarnException ex) {
        LOG.error("Failed to unregister application", ex);
    } catch (IOException e) {
        LOG.error("Failed to unregister application", e);
    }

    amRMClient.stop();
    return success;
}

From source file:org.apache.hama.bsp.BSPApplicationMaster.java

License:Apache License

private void cleanup() throws YarnException, IOException {
    syncServer.stop();/*from w ww .  j  a v  a 2s.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.hama.bsp.YARNBSPJobClient.java

License:Apache License

private boolean monitorApplication(ApplicationId appId) throws IOException, YarnException {
    while (true) {
        try {/*w  w w  .j  a v a  2s.  c  o m*/
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            LOG.debug("Thread sleep in monitoring loop interrupted");
        }

        // Get application report for the appId we are interested in
        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 dsStatus = report.getFinalApplicationStatus();
        if (YarnApplicationState.FINISHED == state) {
            if (FinalApplicationStatus.SUCCEEDED == dsStatus) {
                LOG.info("Application has completed successfully. Breaking monitoring loop");
                return true;
            } else {
                LOG.info("Application did finished unsuccessfully." + " YarnState=" + state.toString()
                        + ", DSFinalStatus=" + dsStatus.toString() + ". Breaking monitoring loop");
                return false;
            }
        } else if (YarnApplicationState.KILLED == state || YarnApplicationState.FAILED == state) {
            LOG.info("Application did not finish." + " YarnState=" + state.toString() + ", DSFinalStatus="
                    + dsStatus.toString() + ". Breaking monitoring loop");
            return false;
        }

        if (System.currentTimeMillis() > (clientStartTime + clientTimeout)) {
            LOG.info("Reached client specified timeout for application. Killing application");
            forceKillApplication(appId);
            return false;
        }
    }
}

From source file:org.apache.helix.provisioning.yarn.AppLauncher.java

License:Apache License

/**
 * @return true if successfully completed, it will print status every X seconds
 *//*from www . ja  va2s. c o m*/
public boolean waitUntilDone() {
    String prevReport = "";
    HelixConnection connection = null;

    while (true) {
        try {
            // Get application report for the appId we are interested in
            ApplicationReport report = yarnClient.getApplicationReport(_appId);

            String reportMessage = generateReport(report);
            if (!reportMessage.equals(prevReport)) {
                LOG.info(reportMessage);
            }
            YarnApplicationState state = report.getYarnApplicationState();
            FinalApplicationStatus dsStatus = report.getFinalApplicationStatus();
            if (YarnApplicationState.FINISHED == state) {
                if (FinalApplicationStatus.SUCCEEDED == dsStatus) {
                    LOG.info("Application has completed successfully. Breaking monitoring loop");
                    return true;
                } else {
                    LOG.info("Application did finished unsuccessfully." + " YarnState=" + state.toString()
                            + ", DSFinalStatus=" + dsStatus.toString() + ". Breaking monitoring loop");
                    return false;
                }
            } else if (YarnApplicationState.KILLED == state || YarnApplicationState.FAILED == state) {
                LOG.info("Application did not finish." + " YarnState=" + state.toString() + ", DSFinalStatus="
                        + dsStatus.toString() + ". Breaking monitoring loop");
                return false;
            }
            if (YarnApplicationState.RUNNING == state) {
                if (connection == null) {
                    String hostName = null;
                    int ind = report.getHost().indexOf('/');
                    if (ind > -1) {
                        hostName = report.getHost().substring(ind + 1);
                    } else {
                        hostName = report.getHost();
                    }
                    connection = new ZkHelixConnection(hostName + ":2181");

                    try {
                        connection.connect();
                    } catch (Exception e) {
                        LOG.warn("AppMaster started but not yet initialized");
                        connection = null;
                    }
                }
                if (connection.isConnected()) {
                    AppStatusReportGenerator generator = new AppStatusReportGenerator();
                    ClusterId clusterId = ClusterId.from(_applicationSpec.getAppName());
                    String generateReport = generator.generateReport(connection, clusterId);
                    LOG.info(generateReport);
                }
            }
            prevReport = reportMessage;
            Thread.sleep(10000);
        } catch (Exception e) {
            LOG.error("Exception while getting info", e);
            break;
        }
    }
    return true;
}

From source file:org.apache.helix.provisioning.yarn.GenericApplicationMaster.java

License:Apache License

public void finish() {
    // Join all launched threads
    // needed for when we time out
    // and we need to release containers
    for (Thread launchThread : launchThreads) {
        try {/*from   w  w w  .  jav  a 2  s  .  c o  m*/
            launchThread.join(10000);
        } catch (InterruptedException e) {
            LOG.info("Exception thrown in thread join: " + e.getMessage());
            e.printStackTrace();
        }
    }

    // When the application completes, it should stop all running containers
    LOG.info("Application completed. Stopping running containers");
    nmClientAsync.stop();

    // When the application completes, it should send a finish application
    // signal to the RM
    LOG.info("Application completed. Signalling finish to RM");

    FinalApplicationStatus appStatus;
    String appMessage = null;
    appStatus = FinalApplicationStatus.SUCCEEDED;
    try {
        amRMClient.unregisterApplicationMaster(appStatus, appMessage, null);
    } catch (YarnException ex) {
        LOG.error("Failed to unregister application", ex);
    } catch (IOException e) {
        LOG.error("Failed to unregister application", e);
    }

    amRMClient.stop();
}

From source file:org.apache.hoya.yarn.appmaster.HoyaAppMaster.java

License:Apache License

/**
 * shut down the cluster /*from  w  ww .ja  v  a 2 s .  com*/
 */
private synchronized void finish() {
    FinalApplicationStatus appStatus;
    log.info("Triggering shutdown of the AM: {}", amCompletionReason);

    String appMessage = amCompletionReason;
    //stop the daemon & grab its exit code
    int exitCode = amExitCode;
    success = exitCode == 0 || exitCode == 3;

    appStatus = success ? FinalApplicationStatus.SUCCEEDED : FinalApplicationStatus.FAILED;
    if (!spawnedProcessExitedBeforeShutdownTriggered) {
        //stopped the forked process but don't worry about its exit code
        exitCode = stopForkedProcess();
        log.debug("Stopped forked process: exit code={}", exitCode);
    }

    //stop any launches in progress
    launchService.stop();

    //now release all containers
    releaseAllContainers();

    // When the application completes, it should send a finish application
    // signal to the RM
    log.info("Application completed. Signalling finish to RM");

    //if there were failed containers and the app isn't already down as failing, it is now
    int failedContainerCount = appState.getFailedCountainerCount();
    if (failedContainerCount != 0 && appStatus == FinalApplicationStatus.SUCCEEDED) {
        appStatus = FinalApplicationStatus.FAILED;
        appMessage = "Completed with exit code =  " + exitCode + " - " + getContainerDiagnosticInfo();
        success = false;
    }
    try {
        log.info("Unregistering AM status={} message={}", appStatus, appMessage);
        asyncRMClient.unregisterApplicationMaster(appStatus, appMessage, null);
    } catch (YarnException e) {
        log.info("Failed to unregister application: " + e, e);
    } catch (IOException e) {
        log.info("Failed to unregister application: " + e, e);
    }
}

From source file:org.apache.hoya.yarn.client.HoyaClient.java

License:Apache License

/**
 * Build an exit code for an application Id and its report.
 * If the report parameter is null, the app is killed
 * @param appId app/* w ww. ja  v  a2 s .c  o m*/
 * @param report report
 * @return the exit code
 */
private int buildExitCode(ApplicationReport report) throws IOException, YarnException {
    if (null == report) {
        forceKillApplication("Reached client specified timeout for application");
        return EXIT_TIMED_OUT;
    }

    YarnApplicationState state = report.getYarnApplicationState();
    FinalApplicationStatus dsStatus = report.getFinalApplicationStatus();
    switch (state) {
    case FINISHED:
        if (FinalApplicationStatus.SUCCEEDED == dsStatus) {
            log.info("Application has completed successfully");
            return EXIT_SUCCESS;
        } else {
            log.info("Application finished unsuccessfully."
                    + "YarnState = {}, DSFinalStatus = {} Breaking monitoring loop", state, dsStatus);
            return EXIT_YARN_SERVICE_FINISHED_WITH_ERROR;
        }

    case KILLED:
        log.info("Application did not finish. YarnState={}, DSFinalStatus={}", state, dsStatus);
        return EXIT_YARN_SERVICE_KILLED;

    case FAILED:
        log.info("Application Failed. YarnState={}, DSFinalStatus={}", state, dsStatus);
        return EXIT_YARN_SERVICE_FAILED;
    default:
        //not in any of these states
        return EXIT_SUCCESS;
    }
}

From source file:org.apache.metron.maas.service.Client.java

License:Apache License

/**
 * Monitor the submitted application for completion.
 * Kill application if time expires./*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) {

        // Check app status every 1 second.
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            LOG.debug("Thread sleep in monitoring loop interrupted");
        }

        // Get application report for the appId we are interested in
        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 dsStatus = report.getFinalApplicationStatus();
        if (YarnApplicationState.RUNNING == state) {
            LOG.info("Application is running...");
            return true;
        }
        if (YarnApplicationState.FINISHED == state) {
            if (FinalApplicationStatus.SUCCEEDED == dsStatus) {
                LOG.info("Application has completed successfully. Breaking monitoring loop");
                return true;
            } else {
                LOG.info("Application did finished unsuccessfully." + " YarnState=" + state.toString()
                        + ", DSFinalStatus=" + dsStatus.toString() + ". Breaking monitoring loop");
                return false;
            }
        } else if (YarnApplicationState.KILLED == state || YarnApplicationState.FAILED == state) {
            LOG.info("Application did not finish." + " YarnState=" + state.toString() + ", DSFinalStatus="
                    + dsStatus.toString() + ". Breaking monitoring loop");
            return false;
        }

        if (System.currentTimeMillis() > (clientStartTime + clientTimeout)) {
            LOG.info("Reached client specified timeout for application. Killing application");
            forceKillApplication(appId);
            return false;
        }
    }

}

From source file:org.apache.oozie.action.hadoop.TestLauncherAM.java

License:Apache License

@SuppressWarnings("unchecked")
private void assertSuccessfulExecution(OozieActionResult actionResult) throws Exception {
    verify(amRmAsyncClientMock).registerApplicationMaster(anyString(), anyInt(), anyString());
    verify(amRmAsyncClientMock).unregisterApplicationMaster(FinalApplicationStatus.SUCCEEDED, EMPTY_STRING,
            EMPTY_STRING);//ww  w.j a v  a2s  . c o m
    verify(amRmAsyncClientMock).stop();
    verify(hdfsOperationsMock).uploadActionDataToHDFS(any(Configuration.class), any(Path.class),
            any(Map.class));
    verify(launcherCallbackNotifierFactoryMock).createCallbackNotifier(any(Configuration.class));
    verify(launcherCallbackNotifierMock).notifyURL(actionResult);
    verify(hdfsOperationsMock).writeStringToFile(any(Path.class), any(Configuration.class), any(String.class));

    Map<String, String> actionData = launcherAM.getActionData();
    verifyFinalStatus(actionData, actionResult);
    verifyNoError(actionData);
}

From source file:org.apache.oozie.action.hadoop.TestLauncherAMCallbackNotifier.java

License:Apache License

public void testNotify() throws Exception {
    Configuration conf = setupEmbeddedContainer(QueryServlet.class, "/count/*", "/count/?status=$jobStatus",
            null);/*from w w  w.  ja  v a2 s.  com*/

    LauncherAMCallbackNotifier cn = new LauncherAMCallbackNotifier(conf);

    assertNull(QueryServlet.lastQueryString);
    cn.notifyURL(OozieActionResult.SUCCEEDED);
    waitForCallbackAndCheckResult(FinalApplicationStatus.SUCCEEDED.toString());
}