/// <summary>Prints the application attempt report for an application attempt id.</summary> /// <param name="applicationAttemptId"/> /// <returns>exitCode</returns> /// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/> /// <exception cref="System.IO.IOException"/> private int PrintApplicationAttemptReport(string applicationAttemptId) { ApplicationAttemptReport appAttemptReport = null; try { appAttemptReport = client.GetApplicationAttemptReport(ConverterUtils.ToApplicationAttemptId (applicationAttemptId)); } catch (ApplicationNotFoundException) { sysout.WriteLine("Application for AppAttempt with id '" + applicationAttemptId + "' doesn't exist in RM or Timeline Server."); return(-1); } catch (ApplicationAttemptNotFoundException) { sysout.WriteLine("Application Attempt with id '" + applicationAttemptId + "' doesn't exist in RM or Timeline Server." ); return(-1); } // Use PrintWriter.println, which uses correct platform line ending. ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintWriter appAttemptReportStr = new PrintWriter(new OutputStreamWriter(baos, Sharpen.Extensions.GetEncoding ("UTF-8"))); if (appAttemptReport != null) { appAttemptReportStr.WriteLine("Application Attempt Report : "); appAttemptReportStr.Write("\tApplicationAttempt-Id : "); appAttemptReportStr.WriteLine(appAttemptReport.GetApplicationAttemptId()); appAttemptReportStr.Write("\tState : "); appAttemptReportStr.WriteLine(appAttemptReport.GetYarnApplicationAttemptState()); appAttemptReportStr.Write("\tAMContainer : "); appAttemptReportStr.WriteLine(appAttemptReport.GetAMContainerId().ToString()); appAttemptReportStr.Write("\tTracking-URL : "); appAttemptReportStr.WriteLine(appAttemptReport.GetTrackingUrl()); appAttemptReportStr.Write("\tRPC Port : "); appAttemptReportStr.WriteLine(appAttemptReport.GetRpcPort()); appAttemptReportStr.Write("\tAM Host : "); appAttemptReportStr.WriteLine(appAttemptReport.GetHost()); appAttemptReportStr.Write("\tDiagnostics : "); appAttemptReportStr.Write(appAttemptReport.GetDiagnostics()); } else { appAttemptReportStr.Write("Application Attempt with id '" + applicationAttemptId + "' doesn't exist in Timeline Server."); appAttemptReportStr.Close(); sysout.WriteLine(baos.ToString("UTF-8")); return(-1); } appAttemptReportStr.Close(); sysout.WriteLine(baos.ToString("UTF-8")); return(0); }
public virtual void TestApplicationAttemptReport() { ApplicationId appId = ApplicationId.NewInstance(0, 1); ApplicationAttemptId appAttemptId = ApplicationAttemptId.NewInstance(appId, 1); GetApplicationAttemptReportRequest request = GetApplicationAttemptReportRequest.NewInstance (appAttemptId); GetApplicationAttemptReportResponse response = clientService.GetApplicationAttemptReport (request); ApplicationAttemptReport attemptReport = response.GetApplicationAttemptReport(); NUnit.Framework.Assert.IsNotNull(attemptReport); NUnit.Framework.Assert.AreEqual("appattempt_0_0001_000001", attemptReport.GetApplicationAttemptId ().ToString()); }
public AppAttemptInfo(ApplicationAttemptReport appAttempt) { // JAXB needs this appAttemptId = appAttempt.GetApplicationAttemptId().ToString(); host = appAttempt.GetHost(); rpcPort = appAttempt.GetRpcPort(); trackingUrl = appAttempt.GetTrackingUrl(); originalTrackingUrl = appAttempt.GetOriginalTrackingUrl(); diagnosticsInfo = appAttempt.GetDiagnostics(); appAttemptState = appAttempt.GetYarnApplicationAttemptState(); if (appAttempt.GetAMContainerId() != null) { amContainerId = appAttempt.GetAMContainerId().ToString(); } }
/// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/> /// <exception cref="System.IO.IOException"/> public virtual void TestGetApplicationAttempt() { Configuration conf = new Configuration(); AHSClient client = new TestAHSClient.MockAHSClient(); client.Init(conf); client.Start(); IList <ApplicationReport> expectedReports = ((TestAHSClient.MockAHSClient)client). GetReports(); ApplicationId applicationId = ApplicationId.NewInstance(1234, 5); ApplicationAttemptId appAttemptId = ApplicationAttemptId.NewInstance(applicationId , 1); ApplicationAttemptReport report = client.GetApplicationAttemptReport(appAttemptId ); NUnit.Framework.Assert.IsNotNull(report); NUnit.Framework.Assert.AreEqual(report.GetApplicationAttemptId().ToString(), expectedReports [0].GetCurrentApplicationAttemptId().ToString()); client.Stop(); }
/// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/> /// <exception cref="System.IO.IOException"/> public virtual IDictionary <ApplicationAttemptId, ApplicationAttemptReport> GetApplicationAttempts (ApplicationId appId) { ApplicationHistoryManagerOnTimelineStore.ApplicationReportExt app = GetApplication (appId, ApplicationHistoryManagerOnTimelineStore.ApplicationReportField.UserAndAcls ); CheckAccess(app); TimelineEntities entities = timelineDataManager.GetEntities(AppAttemptMetricsConstants .EntityType, new NameValuePair(AppAttemptMetricsConstants.ParentPrimaryFilter, appId .ToString()), null, null, null, null, null, long.MaxValue, EnumSet.AllOf <TimelineReader.Field >(), UserGroupInformation.GetLoginUser()); IDictionary <ApplicationAttemptId, ApplicationAttemptReport> appAttempts = new LinkedHashMap <ApplicationAttemptId, ApplicationAttemptReport>(); foreach (TimelineEntity entity in entities.GetEntities()) { ApplicationAttemptReport appAttempt = ConvertToApplicationAttemptReport(entity); appAttempts[appAttempt.GetApplicationAttemptId()] = appAttempt; } return(appAttempts); }
/// <exception cref="System.IO.IOException"/> /// <exception cref="Org.Apache.Hadoop.Yarn.Exceptions.YarnException"/> public virtual bool Run() { Log.Info("Starting Client"); // Connect to ResourceManager rmClient.Start(); try { // Create launch context for app master Log.Info("Setting up application submission context for ASM"); ApplicationSubmissionContext appContext = rmClient.CreateApplication().GetApplicationSubmissionContext (); ApplicationId appId = appContext.GetApplicationId(); // set the application name appContext.SetApplicationName(appName); // Set the priority for the application master Priority pri = Org.Apache.Hadoop.Yarn.Util.Records.NewRecord <Priority>(); pri.SetPriority(amPriority); appContext.SetPriority(pri); // Set the queue to which this application is to be submitted in the RM appContext.SetQueue(amQueue); // Set up the container launch context for the application master ContainerLaunchContext amContainer = Org.Apache.Hadoop.Yarn.Util.Records.NewRecord <ContainerLaunchContext>(); appContext.SetAMContainerSpec(amContainer); // unmanaged AM appContext.SetUnmanagedAM(true); Log.Info("Setting unmanaged AM"); // Submit the application to the applications manager Log.Info("Submitting application to ASM"); rmClient.SubmitApplication(appContext); ApplicationReport appReport = MonitorApplication(appId, EnumSet.Of(YarnApplicationState .Accepted, YarnApplicationState.Killed, YarnApplicationState.Failed, YarnApplicationState .Finished)); if (appReport.GetYarnApplicationState() == YarnApplicationState.Accepted) { // Monitor the application attempt to wait for launch state ApplicationAttemptReport attemptReport = MonitorCurrentAppAttempt(appId, YarnApplicationAttemptState .Launched); ApplicationAttemptId attemptId = attemptReport.GetApplicationAttemptId(); Log.Info("Launching AM with application attempt id " + attemptId); // launch AM LaunchAM(attemptId); // Monitor the application for end state appReport = MonitorApplication(appId, EnumSet.Of(YarnApplicationState.Killed, YarnApplicationState .Failed, YarnApplicationState.Finished)); } YarnApplicationState appState = appReport.GetYarnApplicationState(); FinalApplicationStatus appStatus = appReport.GetFinalApplicationStatus(); Log.Info("App ended with state: " + appReport.GetYarnApplicationState() + " and status: " + appStatus); bool success; if (YarnApplicationState.Finished == appState && FinalApplicationStatus.Succeeded == appStatus) { Log.Info("Application has completed successfully."); success = true; } else { Log.Info("Application did finished unsuccessfully." + " YarnState=" + appState.ToString () + ", FinalStatus=" + appStatus.ToString()); success = false; } return(success); } finally { rmClient.Stop(); } }
private void CreateAppReports() { ApplicationId applicationId = ApplicationId.NewInstance(1234, 5); ApplicationReport newApplicationReport = ApplicationReport.NewInstance(applicationId , ApplicationAttemptId.NewInstance(applicationId, 1), "user", "queue", "appname" , "host", 124, null, YarnApplicationState.Running, "diagnostics", "url", 0, 0, FinalApplicationStatus .Succeeded, null, "N/A", 0.53789f, "YARN", null); IList <ApplicationReport> applicationReports = new AList <ApplicationReport>(); applicationReports.AddItem(newApplicationReport); IList <ApplicationAttemptReport> appAttempts = new AList <ApplicationAttemptReport> (); ApplicationAttemptReport attempt = ApplicationAttemptReport.NewInstance(ApplicationAttemptId .NewInstance(applicationId, 1), "host", 124, "url", "oUrl", "diagnostics", YarnApplicationAttemptState .Finished, ContainerId.NewContainerId(newApplicationReport.GetCurrentApplicationAttemptId (), 1)); appAttempts.AddItem(attempt); ApplicationAttemptReport attempt1 = ApplicationAttemptReport.NewInstance(ApplicationAttemptId .NewInstance(applicationId, 2), "host", 124, "url", "oUrl", "diagnostics", YarnApplicationAttemptState .Finished, ContainerId.NewContainerId(newApplicationReport.GetCurrentApplicationAttemptId (), 2)); appAttempts.AddItem(attempt1); attempts[applicationId] = appAttempts; IList <ContainerReport> containerReports = new AList <ContainerReport>(); ContainerReport container = ContainerReport.NewInstance(ContainerId.NewContainerId (attempt.GetApplicationAttemptId(), 1), null, NodeId.NewInstance("host", 1234), Priority.Undefined, 1234, 5678, "diagnosticInfo", "logURL", 0, ContainerState.Complete , "http://" + NodeId.NewInstance("host", 2345).ToString()); containerReports.AddItem(container); ContainerReport container1 = ContainerReport.NewInstance(ContainerId.NewContainerId (attempt.GetApplicationAttemptId(), 2), null, NodeId.NewInstance("host", 1234), Priority.Undefined, 1234, 5678, "diagnosticInfo", "logURL", 0, ContainerState.Complete , "http://" + NodeId.NewInstance("host", 2345).ToString()); containerReports.AddItem(container1); containers[attempt.GetApplicationAttemptId()] = containerReports; ApplicationId applicationId2 = ApplicationId.NewInstance(1234, 6); ApplicationReport newApplicationReport2 = ApplicationReport.NewInstance(applicationId2 , ApplicationAttemptId.NewInstance(applicationId2, 2), "user2", "queue2", "appname2" , "host2", 125, null, YarnApplicationState.Finished, "diagnostics2", "url2", 2, 2, FinalApplicationStatus.Succeeded, null, "N/A", 0.63789f, "NON-YARN", null); applicationReports.AddItem(newApplicationReport2); ApplicationId applicationId3 = ApplicationId.NewInstance(1234, 7); ApplicationReport newApplicationReport3 = ApplicationReport.NewInstance(applicationId3 , ApplicationAttemptId.NewInstance(applicationId3, 3), "user3", "queue3", "appname3" , "host3", 126, null, YarnApplicationState.Running, "diagnostics3", "url3", 3, 3 , FinalApplicationStatus.Succeeded, null, "N/A", 0.73789f, "MAPREDUCE", null); applicationReports.AddItem(newApplicationReport3); ApplicationId applicationId4 = ApplicationId.NewInstance(1234, 8); ApplicationReport newApplicationReport4 = ApplicationReport.NewInstance(applicationId4 , ApplicationAttemptId.NewInstance(applicationId4, 4), "user4", "queue4", "appname4" , "host4", 127, null, YarnApplicationState.Failed, "diagnostics4", "url4", 4, 4, FinalApplicationStatus.Succeeded, null, "N/A", 0.83789f, "NON-MAPREDUCE", null); applicationReports.AddItem(newApplicationReport4); reports = applicationReports; }