List of usage examples for org.apache.hadoop.yarn.api.records ApplicationReport getTrackingUrl
@Public @Stable public abstract String getTrackingUrl();
From source file:tachyon.yarn.Client.java
License:Apache License
/** * Monitors the submitted application for completion. * * @return true if application completed successfully * @throws YarnException if errors occur when obtaining application report from ResourceManager * @throws IOException if errors occur when obtaining application report from ResourceManager *//*from w ww . jav a 2 s . c o m*/ private boolean monitorApplication() throws YarnException, IOException { DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); while (true) { // Check app status every 10 second. CommonUtils.sleepMs(10 * Constants.SECOND_MS); Date date = new Date(); String timeDateStr = dateFormat.format(date); // Get application report for the appId we are interested in ApplicationReport report = mYarnClient.getApplicationReport(mAppId); System.out.println(timeDateStr + " Got application report from ASM for appId=" + mAppId.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) { System.out.println("Application has completed successfully. Breaking monitoring loop"); return true; } System.out.println("Application did finished unsuccessfully. YarnState=" + state.toString() + ", DSFinalStatus=" + dsStatus.toString() + ". Breaking monitoring loop"); return false; } if (YarnApplicationState.KILLED == state || YarnApplicationState.FAILED == state) { System.out.println("Application did not finish. YarnState=" + state.toString() + ", DSFinalStatus=" + dsStatus.toString() + ". Breaking monitoring loop"); return false; } } }
From source file:timo.yarn_app_call_java_app.Client.java
License:Apache License
/** * Monitor the submitted application for completion. * Kill application if time expires./*w ww . ja v a2s. 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.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; } // Client timeout if (System.currentTimeMillis() > (clientStartTime + clientTimeout)) { LOG.info("Reached client specified timeout for application. Killing application"); forceKillApplication(appId); return false; } } }
From source file:timo.yarn_app_call_java_daemon.Client.java
License:Apache License
/** * Monitor the submitted application for completion. * Kill application if time expires./*from www . j a v a 2 s . c om*/ * * @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.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; } // Running if (YarnApplicationState.RUNNING == state) { LOG.info("Application is running. Breaking monitoring loop."); return true; } // Client timeout if (System.currentTimeMillis() > (clientStartTime + clientTimeout)) { LOG.info("Reached client specified timeout for application. Killing application"); forceKillApplication(appId); return false; } } }
From source file:uk.ac.gla.terrier.probos.controller.ControllerServer.java
License:Open Source License
@Override public PBSJobStatusLight getJobStatus(int jobId, int requestType) throws Exception { if (requestType > 5 || requestType < 0) throw new IllegalArgumentException("requestType must be [0,1,2,3,4,5]"); char state = '*'; if (!jobArray.containsKey(jobId)) state = '?'; final JobInformation ji = jobArray.get(jobId); final PBSJob job = ji != null ? ji.jobSpec : null; YarnClientService kittenClient = ji != null ? ji.kitten : null; ApplicationReport appReport = null; if (kittenClient == null || (appReport = kittenClient.getApplicationReport()) == null) { state = '?'; if (jobHolds.get(jobId) != null) { state = 'H'; }//from w ww . j a va 2s.c o m } else { YarnApplicationState appState = appReport.getYarnApplicationState(); if (kittenClient.isApplicationFinished()) state = 'E'; else switch (appState) { case NEW: case NEW_SAVING: case ACCEPTED: case SUBMITTED: state = 'Q'; break; case FAILED: case KILLED: case FINISHED: state = 'E'; break; case RUNNING: state = 'R'; break; default: state = '?'; break; } } String timeUse = appReport == null ? "0" : Utils.makeTime(appReport.getApplicationResourceUsageReport().getVcoreSeconds()); String appURL = appReport == null ? "" : appReport.getTrackingUrl(); PBSJobStatusLight rtr = null; String nodes = null; List<ContainerReport> cReports = null; String appId = null; if (requestType == 0) { rtr = new PBSJobStatusLight(jobId, job != null ? job.getArrayTaskIds() != null : false, job != null ? job.getJob_Name() : null, job != null ? job.getJob_Owner() : null, timeUse, state, job != null ? job.getQueue() : null, appURL); } else if (requestType == 4) { checkOwnerOrRoot(ji); JobInteractiveInfo jii = ji != null ? ji.interactive : null; rtr = new PBSJobStatusInteractive(jobId, job != null ? job.getArrayTaskIds() != null : false, job != null ? job.getJob_Name() : null, job != null ? job.getJob_Owner() : null, timeUse, state, job != null ? job.getQueue() : null, appURL, jii != null ? jii.hostname : null, jii != null ? jii.port : -1, jii != null ? jii.secret : null); } else if (requestType == 5) { checkOwnerOrRoot(ji); JobDistributedInfo jid = ji != null ? ji.distributed : null; String secret = jid != null ? jid.secret : null; String[] hostnames = jid != null ? jid.hostnames.toArray(new String[0]) : null; int[] ports = jid != null ? jid.ports.toArray() : null; rtr = new PBSJobStatusDistributed(jobId, job != null ? job.getArrayTaskIds() != null : false, job != null ? job.getJob_Name() : null, job != null ? job.getJob_Owner() : null, timeUse, state, job != null ? job.getQueue() : null, appURL, hostnames, ports, secret); } //we need the nodes also else if (requestType >= 1) { if (kittenClient != null) { ApplicationId aid = kittenClient.getApplicationReport().getApplicationId(); appId = aid.toString(); List<ApplicationAttemptReport> aaids = yClient.getApplicationAttempts(aid); ApplicationAttemptId aaid = aaids.get(aaids.size() - 1).getApplicationAttemptId(); cReports = yClient.getContainers(aaid); StringBuilder sNodes = new StringBuilder(); if (cReports.size() > 0) { for (ContainerReport cReport : cReports) { if (cReport.getContainerState() == ContainerState.RUNNING) { sNodes.append(cReport.getAssignedNode().getHost()); sNodes.append("+"); } } //remove trailing , sNodes.setLength(sNodes.length() - 1); } nodes = sNodes.toString(); } if (requestType == 1) { rtr = new PBSJobStatusNodes(jobId, job.getArrayTaskIds() != null, job != null ? job.getJob_Name() : null, job != null ? job.getJob_Owner() : null, timeUse, state, job != null ? job.getQueue() : null, appURL, nodes); } else if (requestType == 2) { String[] tContainers; if (job != null) { tContainers = job.getArrayTaskIds() != null ? ji.array2Container.values(new String[0]) : new String[] { ji.taskContainerId }; } else { tContainers = new String[0]; } String trackingURL = appReport != null ? appReport.getTrackingUrl() : null; rtr = new PBSJobStatusFat(jobId, job != null ? job.getArrayTaskIds() != null : false, job != null ? job.getJob_Name() : null, job != null ? job.getJob_Owner() : null, timeUse, state, job != null ? job.getQueue() : null, nodes, ji != null ? ji.jobSpec : null, ji != null ? ji.masterContainerId : null, tContainers, trackingURL, appId); } else if (requestType == 3) { int[] arrayIds = job != null ? JobUtils.getTaskArrayItems(job.getArrayTaskIds()) : new int[0]; if (arrayIds == null) arrayIds = new int[0]; char[] states = new char[arrayIds.length]; //String[] walltime = new String[arrayIds.length]; int i = 0; for (int arid : arrayIds) { String containerStatus = ji.array2Container.get(arid); if (containerStatus == null) states[i] = 'Q'; else if (containerStatus.equals("DONE")) states[i] = 'C'; else if (containerStatus.equals("ABORTED")) states[i] = 'C'; else { states[i] = 'R'; // ContainerId c = ContainerId.fromString(containerStatus); // for(ContainerReport cReport : cReports) // { // if (cReport.getContainerId().equals(c) // { // walltime[i] = cReport. // } } i++; } rtr = new PBSJobArrayStatusLight(jobId, job != null ? job.getJob_Name() : null, job != null ? job.getJob_Owner() : null, timeUse, state, job != null ? job.getQueue() : null, appURL, arrayIds, states); } else { //this should not be reached. throw new IllegalArgumentException("Bad requestType"); } } return rtr; }
From source file:x10.x10rt.yarn.Client.java
License:Open Source License
/** * Monitor the submitted application for completion. * Kill application if time expires./*ww w . j av a 2s.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 { YarnApplicationState previousState = null; 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); YarnApplicationState state = report.getYarnApplicationState(); if (!state.equals(previousState)) { previousState = state; 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()); } 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 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; } } }
From source file:yarnkit.client.YarnkitClient.java
License:Apache License
private int handle(@Nonnull YarnClientService service) throws Exception { service.startAndWait();//from ww w .ja va 2 s.co m if (!service.isRunning()) { LOG.error("Service failed to startup"); return 1; } String trackingUrl = null; while (service.isRunning()) { if (trackingUrl == null) { Thread.sleep(1000); ApplicationReport report = service.getApplicationReport(); YarnApplicationState yarnAppState = report.getYarnApplicationState(); if (yarnAppState == YarnApplicationState.RUNNING) { trackingUrl = report.getTrackingUrl(); if (trackingUrl == null || trackingUrl.isEmpty()) { LOG.info("Application is running, but did not specify a tracking URL"); trackingUrl = ""; } else { LOG.info("Master Tracking URL: " + trackingUrl); } } } } ApplicationReport report = service.getFinalReport(); if (report == null) { LOG.error("No final report"); return 1; } else if (report.getFinalApplicationStatus() != FinalApplicationStatus.SUCCEEDED) { LOG.error(report); return 1; } else { LOG.info("Final report: \n" + report); return 0; } }