List of usage examples for org.apache.hadoop.yarn.api.protocolrecords FinishApplicationMasterRequest setFinalApplicationStatus
@Public @Stable public abstract void setFinalApplicationStatus(FinalApplicationStatus finalState);
ApplicationMaster 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); }