Example usage for org.apache.hadoop.yarn.server.resourcemanager.recovery.records.impl.pb ApplicationStateDataPBImpl ApplicationStateDataPBImpl

List of usage examples for org.apache.hadoop.yarn.server.resourcemanager.recovery.records.impl.pb ApplicationStateDataPBImpl ApplicationStateDataPBImpl

Introduction

In this page you can find the example usage for org.apache.hadoop.yarn.server.resourcemanager.recovery.records.impl.pb ApplicationStateDataPBImpl ApplicationStateDataPBImpl.

Prototype

public ApplicationStateDataPBImpl(ApplicationStateDataProto proto) 

Source Link

Usage

From source file:io.hops.metadata.util.RMUtilities.java

License:Apache License

/**
 * Retrieve applications (RMApp, RMAppAttempt) from NDB. MUST be used only
 * by ResourceTrackerService as some fields of the objects are not set.
 *
 * @param rmContext/*from   ww w .j  ava  2s  .c o  m*/
 * @param conf
 * @param applicationId
 * @return
 * @throws java.io.IOException
 */
public static RMApp getRMApp(RMContext rmContext, Configuration conf, String applicationId) throws IOException {
    //Retrieve all applicationIds from NDB
    ApplicationState hopAppState = RMUtilities.getApplicationState(applicationId);

    if (hopAppState != null) {
        //Create ApplicationState for every application

        ApplicationId appId = ConverterUtils.toApplicationId(hopAppState.getApplicationid());
        ApplicationStateDataPBImpl appStateData = new ApplicationStateDataPBImpl(
                ApplicationStateDataProto.parseFrom(hopAppState.getAppstate()));
        RMStateStore.ApplicationState appState = new RMStateStore.ApplicationState(appStateData.getSubmitTime(),
                appStateData.getStartTime(), appStateData.getApplicationSubmissionContext(),
                appStateData.getUser(), appStateData.getState(), appStateData.getDiagnostics(),
                appStateData.getFinishTime(), appStateData.getStateBeforeKilling(),
                appStateData.getUpdatedNodesId());
        LOG.debug("loadRMAppState for app " + appState.getAppId() + " state " + appState.getState());

        //Create RMApp
        //Null fields are not required by ResourceTrackerService
        RMAppImpl application = new RMAppImpl(appId, rmContext, conf,
                appState.getApplicationSubmissionContext().getApplicationName(), appState.getUser(),
                appState.getApplicationSubmissionContext().getQueue(),
                appState.getApplicationSubmissionContext(), null, null, appState.getSubmitTime(),
                appState.getApplicationSubmissionContext().getApplicationType(),
                appState.getApplicationSubmissionContext().getApplicationTags(), null);
        ApplicationAttemptId appAttemptId = ApplicationAttemptId.newInstance(appId,
                appState.getAttemptCount() + 1);
        ApplicationAttemptState hopAppAttemptState = RMUtilities.getApplicationAttemptState(applicationId,
                appAttemptId.toString());
        if (hopAppAttemptState != null) {
            ApplicationAttemptStateDataPBImpl attemptStateData = new ApplicationAttemptStateDataPBImpl(
                    YarnServerResourceManagerServiceProtos.ApplicationAttemptStateDataProto
                            .parseFrom(hopAppAttemptState.getApplicationattemptstate()));

            RMAppAttempt attempt = new RMAppAttemptImpl(appAttemptId, rmContext, null, null,
                    appState.getApplicationSubmissionContext(), conf,
                    application.getMaxAppAttempts() == application.getAppAttempts().size());

            ((RMAppAttemptImpl) attempt).setMasterContainer(attemptStateData.getMasterContainer());

            application.addRMAppAttempt(appAttemptId, attempt);
            return application;
        }
    }
    return null;
}