List of usage examples for org.apache.hadoop.yarn.api.records FinalApplicationStatus SUCCEEDED
FinalApplicationStatus SUCCEEDED
To view the source code for org.apache.hadoop.yarn.api.records FinalApplicationStatus SUCCEEDED.
Click Source Link
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()); }