当前位置: 首页>>代码示例>>Java>>正文


Java RMState.getApplicationState方法代码示例

本文整理汇总了Java中org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState.getApplicationState方法的典型用法代码示例。如果您正苦于以下问题:Java RMState.getApplicationState方法的具体用法?Java RMState.getApplicationState怎么用?Java RMState.getApplicationState使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState的用法示例。


在下文中一共展示了RMState.getApplicationState方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: finishApplicationMaster

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
private void finishApplicationMaster(RMApp rmApp, MockRM rm, MockNM nm,
    MockAM am, FinishApplicationMasterRequest req) throws Exception {
  RMState rmState =
      ((MemoryRMStateStore) rm.getRMContext().getStateStore()).getState();
  Map<ApplicationId, ApplicationStateData> rmAppState =
      rmState.getApplicationState();
  am.unregisterAppAttempt(req,true);
  am.waitForState(RMAppAttemptState.FINISHING);
  nm.nodeHeartbeat(am.getApplicationAttemptId(), 1, ContainerState.COMPLETE);
  am.waitForState(RMAppAttemptState.FINISHED);
  rm.waitForState(rmApp.getApplicationId(), RMAppState.FINISHED);
  // check that app/attempt is saved with the final state
  ApplicationStateData appState = rmAppState.get(rmApp.getApplicationId());
  Assert
    .assertEquals(RMAppState.FINISHED, appState.getState());
  Assert.assertEquals(RMAppAttemptState.FINISHED,
    appState.getAttempt(am.getApplicationAttemptId()).getState());
}
 
开发者ID:naver,项目名称:hadoop,代码行数:19,代码来源:TestRMRestart.java

示例2: finishApplicationMaster

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
private void finishApplicationMaster(RMApp rmApp, MockRM rm, MockNM nm,
    MockAM am, FinishApplicationMasterRequest req) throws Exception {
  RMState rmState =
      ((MemoryRMStateStore) rm.getRMContext().getStateStore()).getState();
  Map<ApplicationId, ApplicationState> rmAppState =
      rmState.getApplicationState();
  am.unregisterAppAttempt(req,true);
  am.waitForState(RMAppAttemptState.FINISHING);
  nm.nodeHeartbeat(am.getApplicationAttemptId(), 1, ContainerState.COMPLETE);
  am.waitForState(RMAppAttemptState.FINISHED);
  rm.waitForState(rmApp.getApplicationId(), RMAppState.FINISHED);
  // check that app/attempt is saved with the final state
  ApplicationState appState = rmAppState.get(rmApp.getApplicationId());
  Assert
    .assertEquals(RMAppState.FINISHED, appState.getState());
  Assert.assertEquals(RMAppAttemptState.FINISHED,
    appState.getAttempt(am.getApplicationAttemptId()).getState());
}
 
开发者ID:Nextzero,项目名称:hadoop-2.6.0-cdh5.4.3,代码行数:19,代码来源:TestRMRestart.java

示例3: finishApplicationMaster

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
private void finishApplicationMaster(RMApp rmApp, MockRM rm, MockNM nm,
    MockAM am, FinishApplicationMasterRequest req) throws Exception {
  am.unregisterAppAttempt(req,true);
  am.waitForState(RMAppAttemptState.FINISHING);
  nm.nodeHeartbeat(am.getApplicationAttemptId(), 1, ContainerState.COMPLETE);
  am.waitForState(RMAppAttemptState.FINISHED);
  rm.waitForState(rmApp.getApplicationId(), RMAppState.FINISHED);
  // check that app/attempt is saved with the final state
  RMState rmState = rm.getRMContext().getStateStore().loadState();
  Map<ApplicationId, ApplicationStateData> rmAppState =
      rmState.getApplicationState();
  ApplicationStateData appState = rmAppState.get(rmApp.getApplicationId());
  Assert
    .assertEquals(RMAppState.FINISHED, appState.getState());
  Assert.assertEquals(RMAppAttemptState.FINISHED,
    appState.getAttempt(am.getApplicationAttemptId()).getState());
}
 
开发者ID:hopshadoop,项目名称:hops,代码行数:18,代码来源:TestRMRestart.java

示例4: testAppsRecoveringStates

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
@Test(timeout = 30000)
public void testAppsRecoveringStates() throws Exception {
  RMState state = new RMState();
  Map<ApplicationId, ApplicationStateData> applicationState =
      state.getApplicationState();
  createRMStateForApplications(applicationState, RMAppState.FINISHED);
  createRMStateForApplications(applicationState, RMAppState.KILLED);
  createRMStateForApplications(applicationState, RMAppState.FAILED);
  for (ApplicationStateData appState : applicationState.values()) {
    testRecoverApplication(appState, state);
  }
}
 
开发者ID:naver,项目名称:hadoop,代码行数:13,代码来源:TestRMAppTransitions.java

示例5: testAppsRecoveringStates

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
@Test(timeout = 30000)
public void testAppsRecoveringStates() throws Exception {
  RMState state = new RMState();
  Map<ApplicationId, ApplicationState> applicationState =
      state.getApplicationState();
  createRMStateForApplications(applicationState, RMAppState.FINISHED);
  createRMStateForApplications(applicationState, RMAppState.KILLED);
  createRMStateForApplications(applicationState, RMAppState.FAILED);
  for (ApplicationState appState : applicationState.values()) {
    testRecoverApplication(appState, state);
  }
}
 
开发者ID:Seagate,项目名称:hadoop-on-lustre2,代码行数:13,代码来源:TestRMAppTransitions.java

示例6: testRMRestartAppRunningAMFailed

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
@Test (timeout = 60000)
public void testRMRestartAppRunningAMFailed() throws Exception {
  conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS,
    YarnConfiguration.DEFAULT_RM_AM_MAX_ATTEMPTS);
  MemoryRMStateStore memStore = new MemoryRMStateStore();
  memStore.init(conf);
  RMState rmState = memStore.getState();
  Map<ApplicationId, ApplicationStateData> rmAppState =
      rmState.getApplicationState();

  // start RM
  MockRM rm1 = createMockRM(conf, memStore);
  rm1.start();
  MockNM nm1 =
      new MockNM("127.0.0.1:1234", 15120, rm1.getResourceTrackerService());
  nm1.registerNode();

  // create app and launch the AM
  RMApp app0 =
      rm1.submitApp(200, "name", "user",
        new HashMap<ApplicationAccessType, String>(), false, "default", -1,
        null, "MAPREDUCE", true, true);
  MockAM am0 = launchAM(app0, rm1, nm1);

  // fail the AM by sending CONTAINER_FINISHED event without registering.
  nm1.nodeHeartbeat(am0.getApplicationAttemptId(), 1, ContainerState.COMPLETE);
  am0.waitForState(RMAppAttemptState.FAILED);

  ApplicationStateData appState = rmAppState.get(app0.getApplicationId());
  // assert the AM failed state is saved.
  Assert.assertEquals(RMAppAttemptState.FAILED,
    appState.getAttempt(am0.getApplicationAttemptId()).getState());

  // assert app state has not been saved.
  Assert.assertNull(rmAppState.get(app0.getApplicationId()).getState());

  // new AM started but not registered, app still stays at ACCECPTED state.
  rm1.waitForState(app0.getApplicationId(), RMAppState.ACCEPTED);

  // start new RM
  MockRM rm2 = createMockRM(conf, memStore);
  rm2.start();
  // assert the previous AM state is loaded back on RM recovery.

  rm2.waitForState(am0.getApplicationAttemptId(), RMAppAttemptState.FAILED);
}
 
开发者ID:naver,项目名称:hadoop,代码行数:47,代码来源:TestRMRestart.java

示例7: testRMRestartWaitForPreviousSucceededAttempt

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
@Test (timeout = 60000)
public void testRMRestartWaitForPreviousSucceededAttempt() throws Exception {
  conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, 2);
  MemoryRMStateStore memStore = new MemoryRMStateStore() {
    int count = 0;

    @Override
    public void updateApplicationStateInternal(ApplicationId appId,
        ApplicationStateData appStateData) throws Exception {
      if (count == 0) {
        // do nothing; simulate app final state is not saved.
        LOG.info(appId + " final state is not saved.");
        count++;
      } else {
        super.updateApplicationStateInternal(appId, appStateData);
      }
    }
  };
  memStore.init(conf);
  RMState rmState = memStore.getState();
  Map<ApplicationId, ApplicationStateData> rmAppState =
      rmState.getApplicationState();

  // start RM
  MockRM rm1 = createMockRM(conf, memStore);
  rm1.start();
  MockNM nm1 = rm1.registerNode("127.0.0.1:1234", 15120);
  RMApp app0 = rm1.submitApp(200);
  MockAM am0 = MockRM.launchAndRegisterAM(app0, rm1, nm1);

  FinishApplicationMasterRequest req =
      FinishApplicationMasterRequest.newInstance(
        FinalApplicationStatus.SUCCEEDED, "", "");
  am0.unregisterAppAttempt(req, true);
  am0.waitForState(RMAppAttemptState.FINISHING);
  // app final state is not saved. This guarantees that RMApp cannot be
  // recovered via its own saved state, but only via the event notification
  // from the RMAppAttempt on recovery.
  Assert.assertNull(rmAppState.get(app0.getApplicationId()).getState());

  // start RM
  MockRM rm2 = createMockRM(conf, memStore);
  nm1.setResourceTrackerService(rm2.getResourceTrackerService());
  rm2.start();

  rm2.waitForState(app0.getCurrentAppAttempt().getAppAttemptId(),
    RMAppAttemptState.FINISHED);
  rm2.waitForState(app0.getApplicationId(), RMAppState.FINISHED);
  // app final state is saved via the finish event from attempt.
  Assert.assertEquals(RMAppState.FINISHED,
      rmAppState.get(app0.getApplicationId()).getState());
}
 
开发者ID:naver,项目名称:hadoop,代码行数:53,代码来源:TestRMRestart.java

示例8: testRMRestartFailedApp

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
@Test (timeout = 60000)
public void testRMRestartFailedApp() throws Exception {
  conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, 1);
  MemoryRMStateStore memStore = new MemoryRMStateStore();
  memStore.init(conf);
  RMState rmState = memStore.getState();
  Map<ApplicationId, ApplicationStateData> rmAppState =
      rmState.getApplicationState();

  // start RM
  MockRM rm1 = createMockRM(conf, memStore);
  rm1.start();
  MockNM nm1 =
      new MockNM("127.0.0.1:1234", 15120, rm1.getResourceTrackerService());
  nm1.registerNode();

  // create app and launch the AM
  RMApp app0 = rm1.submitApp(200);
  MockAM am0 = launchAM(app0, rm1, nm1);

  // fail the AM by sending CONTAINER_FINISHED event without registering.
  nm1.nodeHeartbeat(am0.getApplicationAttemptId(), 1, ContainerState.COMPLETE);
  am0.waitForState(RMAppAttemptState.FAILED);
  rm1.waitForState(app0.getApplicationId(), RMAppState.FAILED);

  // assert the app/attempt failed state is saved.
  ApplicationStateData appState = rmAppState.get(app0.getApplicationId());
  Assert.assertEquals(RMAppState.FAILED, appState.getState());
  Assert.assertEquals(RMAppAttemptState.FAILED,
    appState.getAttempt(am0.getApplicationAttemptId()).getState());

  // start new RM
  MockRM rm2 = createMockRM(conf, memStore);
  rm2.start();
  RMApp loadedApp0 = rm2.getRMContext().getRMApps().get(app0.getApplicationId());
  rm2.waitForState(app0.getApplicationId(), RMAppState.FAILED);
  rm2.waitForState(am0.getApplicationAttemptId(), RMAppAttemptState.FAILED);
  // no new attempt is created.
  Assert.assertEquals(1, loadedApp0.getAppAttempts().size());

  verifyAppReportAfterRMRestart(app0, rm2);
  Assert.assertTrue(app0.getDiagnostics().toString()
    .contains("Failing the application."));
  // failed diagnostics from attempt is lost because the diagnostics from
  // attempt is not yet available by the time app is saving the app state.
}
 
开发者ID:naver,项目名称:hadoop,代码行数:47,代码来源:TestRMRestart.java

示例9: testRMRestartKilledApp

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
@Test (timeout = 60000)
public void testRMRestartKilledApp() throws Exception{
  conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS,
    YarnConfiguration.DEFAULT_RM_AM_MAX_ATTEMPTS);
  MemoryRMStateStore memStore = new MemoryRMStateStore();
  memStore.init(conf);
  RMState rmState = memStore.getState();
  Map<ApplicationId, ApplicationStateData> rmAppState =
      rmState.getApplicationState();

  // start RM
  MockRM rm1 = createMockRM(conf, memStore);
  rm1.start();
  MockNM nm1 =
      new MockNM("127.0.0.1:1234", 15120, rm1.getResourceTrackerService());
  nm1.registerNode();

  // create app and launch the AM
  RMApp app0 = rm1.submitApp(200);
  MockAM am0 = launchAM(app0, rm1, nm1);

  // kill the app.
  rm1.killApp(app0.getApplicationId());
  rm1.waitForState(app0.getApplicationId(), RMAppState.KILLED);
  rm1.waitForState(am0.getApplicationAttemptId(), RMAppAttemptState.KILLED);

  // killed state is saved.
  ApplicationStateData appState = rmAppState.get(app0.getApplicationId());
  Assert.assertEquals(RMAppState.KILLED, appState.getState());
  Assert.assertEquals(RMAppAttemptState.KILLED,
    appState.getAttempt(am0.getApplicationAttemptId()).getState());
  String trackingUrl = app0.getCurrentAppAttempt().getOriginalTrackingUrl();
  Assert.assertNotNull(trackingUrl);

  // restart rm
  MockRM rm2 = createMockRM(conf, memStore);
  rm2.start();
  RMApp loadedApp0 = rm2.getRMContext().getRMApps().get(app0.getApplicationId());
  rm2.waitForState(app0.getApplicationId(), RMAppState.KILLED);
  rm2.waitForState(am0.getApplicationAttemptId(), RMAppAttemptState.KILLED);
  // no new attempt is created.
  Assert.assertEquals(1, loadedApp0.getAppAttempts().size());

  ApplicationReport appReport = verifyAppReportAfterRMRestart(app0, rm2);
  Assert.assertEquals(app0.getDiagnostics().toString(),
      appReport.getDiagnostics());
  Assert.assertEquals(trackingUrl, loadedApp0.getCurrentAppAttempt()
      .getOriginalTrackingUrl());
}
 
开发者ID:naver,项目名称:hadoop,代码行数:50,代码来源:TestRMRestart.java

示例10: testRMRestartSucceededApp

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
@Test (timeout = 60000)
public void testRMRestartSucceededApp() throws Exception {
  conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS,
    YarnConfiguration.DEFAULT_RM_AM_MAX_ATTEMPTS);
  MemoryRMStateStore memStore = new MemoryRMStateStore();
  memStore.init(conf);
  RMState rmState = memStore.getState();
  Map<ApplicationId, ApplicationStateData> rmAppState =
      rmState.getApplicationState();

  // start RM
  MockRM rm1 = createMockRM(conf, memStore);
  rm1.start();
  MockNM nm1 =
      new MockNM("127.0.0.1:1234", 15120, rm1.getResourceTrackerService());
  nm1.registerNode();

  // create an app and finish the app.
  RMApp app0 = rm1.submitApp(200);
  MockAM am0 = launchAM(app0, rm1, nm1);

  // unregister am
  FinishApplicationMasterRequest req =
      FinishApplicationMasterRequest.newInstance(
        FinalApplicationStatus.SUCCEEDED, "diagnostics", "trackingUrl");
  finishApplicationMaster(app0, rm1, nm1, am0, req);
 
  // check the state store about the unregistered info.
  ApplicationStateData appState = rmAppState.get(app0.getApplicationId());
  ApplicationAttemptStateData attemptState0 =
    appState.getAttempt(am0.getApplicationAttemptId());
  Assert.assertEquals("diagnostics", attemptState0.getDiagnostics());
  Assert.assertEquals(FinalApplicationStatus.SUCCEEDED,
    attemptState0.getFinalApplicationStatus());
  Assert.assertEquals("trackingUrl", attemptState0.getFinalTrackingUrl());
  Assert.assertEquals(app0.getFinishTime(), appState.getFinishTime());

  // restart rm
  MockRM rm2 = createMockRM(conf, memStore);
  rm2.start();

  // verify application report returns the same app info as the app info
  // before RM restarts.
  ApplicationReport appReport = verifyAppReportAfterRMRestart(app0, rm2);
  Assert.assertEquals(FinalApplicationStatus.SUCCEEDED,
    appReport.getFinalApplicationStatus());
  Assert.assertEquals("trackingUrl", appReport.getOriginalTrackingUrl());
}
 
开发者ID:naver,项目名称:hadoop,代码行数:49,代码来源:TestRMRestart.java

示例11: testRMRestartOnMaxAppAttempts

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
@Test (timeout = 60000)
public void testRMRestartOnMaxAppAttempts() throws Exception {
  conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS,
      YarnConfiguration.DEFAULT_RM_AM_MAX_ATTEMPTS);

  MemoryRMStateStore memStore = new MemoryRMStateStore();
  memStore.init(conf);
  RMState rmState = memStore.getState();

  Map<ApplicationId, ApplicationStateData> rmAppState =
      rmState.getApplicationState();  
  MockRM rm1 = createMockRM(conf, memStore);
  rm1.start();
  MockNM nm1 =
      new MockNM("127.0.0.1:1234", 15120, rm1.getResourceTrackerService());
  nm1.registerNode();

  // submit an app with maxAppAttempts equals to 1
  RMApp app1 = rm1.submitApp(200, "name", "user",
        new HashMap<ApplicationAccessType, String>(), false, "default", 1,
        null);
  // submit an app with maxAppAttempts equals to -1
  RMApp app2 = rm1.submitApp(200, "name", "user",
        new HashMap<ApplicationAccessType, String>(), false, "default", -1,
        null);

  // assert app1 info is saved
  ApplicationStateData appState = rmAppState.get(app1.getApplicationId());
  Assert.assertNotNull(appState);
  Assert.assertEquals(0, appState.getAttemptCount());
  Assert.assertEquals(appState.getApplicationSubmissionContext()
      .getApplicationId(), app1.getApplicationSubmissionContext()
      .getApplicationId());

  // Allocate the AM
  nm1.nodeHeartbeat(true);
  RMAppAttempt attempt = app1.getCurrentAppAttempt();
  ApplicationAttemptId attemptId1 = attempt.getAppAttemptId();
  rm1.waitForState(attemptId1, RMAppAttemptState.ALLOCATED);
  Assert.assertEquals(1, appState.getAttemptCount());
  ApplicationAttemptStateData attemptState =
                              appState.getAttempt(attemptId1);
  Assert.assertNotNull(attemptState);
  Assert.assertEquals(BuilderUtils.newContainerId(attemptId1, 1), 
                      attemptState.getMasterContainer().getId());

  // Setting AMLivelinessMonitor interval to be 3 Secs.
  conf.setInt(YarnConfiguration.RM_AM_EXPIRY_INTERVAL_MS, 3000);
  // start new RM   
  MockRM rm2 = createMockRM(conf, memStore);
  rm2.start();

  // verify that maxAppAttempts is set to global value
  Assert.assertEquals(2, 
      rm2.getRMContext().getRMApps().get(app2.getApplicationId())
      .getMaxAppAttempts());

  // app1 and app2 are loaded back, but app1 failed because it's
  // hitting max-retry.
  Assert.assertEquals(2, rm2.getRMContext().getRMApps().size());
  rm2.waitForState(app1.getApplicationId(), RMAppState.FAILED);
  rm2.waitForState(app2.getApplicationId(), RMAppState.ACCEPTED);

  // app1 failed state is saved in state store. app2 final saved state is not
  // determined yet.
  Assert.assertEquals(RMAppState.FAILED,
    rmAppState.get(app1.getApplicationId()).getState());
  Assert.assertNull(rmAppState.get(app2.getApplicationId()).getState());
}
 
开发者ID:naver,项目名称:hadoop,代码行数:70,代码来源:TestRMRestart.java

示例12: testDelegationTokenRestoredInDelegationTokenRenewer

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
@Test (timeout = 60000)
public void testDelegationTokenRestoredInDelegationTokenRenewer()
    throws Exception {
  conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, 2);
  conf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION,
      "kerberos");
  UserGroupInformation.setConfiguration(conf);

  MemoryRMStateStore memStore = new MemoryRMStateStore();
  memStore.init(conf);
  RMState rmState = memStore.getState();

  Map<ApplicationId, ApplicationStateData> rmAppState =
      rmState.getApplicationState();
  MockRM rm1 = new TestSecurityMockRM(conf, memStore);
  rm1.start();

  HashSet<Token<RMDelegationTokenIdentifier>> tokenSet =
      new HashSet<Token<RMDelegationTokenIdentifier>>();

  // create an empty credential
  Credentials ts = new Credentials();

  // create tokens and add into credential
  Text userText1 = new Text("user1");
  RMDelegationTokenIdentifier dtId1 =
      new RMDelegationTokenIdentifier(userText1, new Text("renewer1"),
        userText1);
  Token<RMDelegationTokenIdentifier> token1 =
      new Token<RMDelegationTokenIdentifier>(dtId1,
        rm1.getRMContext().getRMDelegationTokenSecretManager());
  SecurityUtil.setTokenService(token1, rmAddr);
  ts.addToken(userText1, token1);
  tokenSet.add(token1);

  Text userText2 = new Text("user2");
  RMDelegationTokenIdentifier dtId2 =
      new RMDelegationTokenIdentifier(userText2, new Text("renewer2"),
        userText2);
  Token<RMDelegationTokenIdentifier> token2 =
      new Token<RMDelegationTokenIdentifier>(dtId2,
        rm1.getRMContext().getRMDelegationTokenSecretManager());
  SecurityUtil.setTokenService(token2, rmAddr);
  ts.addToken(userText2, token2);
  tokenSet.add(token2);

  // submit an app with customized credential
  RMApp app = rm1.submitApp(200, "name", "user",
      new HashMap<ApplicationAccessType, String>(), false, "default", 1, ts);

  // assert app info is saved
  ApplicationStateData appState = rmAppState.get(app.getApplicationId());
  Assert.assertNotNull(appState);

  // assert delegation tokens exist in rm1 DelegationTokenRenewr
  Assert.assertEquals(tokenSet, rm1.getRMContext()
    .getDelegationTokenRenewer().getDelegationTokens());

  // assert delegation tokens are saved
  DataOutputBuffer dob = new DataOutputBuffer();
  ts.writeTokenStorageToStream(dob);
  ByteBuffer securityTokens =
      ByteBuffer.wrap(dob.getData(), 0, dob.getLength());
  securityTokens.rewind();
  Assert.assertEquals(securityTokens, appState
    .getApplicationSubmissionContext().getAMContainerSpec()
    .getTokens());

  // start new RM
  MockRM rm2 = new TestSecurityMockRM(conf, memStore);
  rm2.start();

  // Need to wait for a while as now token renewal happens on another thread
  // and is asynchronous in nature.
  waitForTokensToBeRenewed(rm2);

  // verify tokens are properly populated back to rm2 DelegationTokenRenewer
  Assert.assertEquals(tokenSet, rm2.getRMContext()
    .getDelegationTokenRenewer().getDelegationTokens());
}
 
开发者ID:naver,项目名称:hadoop,代码行数:81,代码来源:TestRMRestart.java

示例13: testAppAttemptTokensRestoredOnRMRestart

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
@Test (timeout = 60000)
public void testAppAttemptTokensRestoredOnRMRestart() throws Exception {
  conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, 2);
  conf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION,
    "kerberos");
  UserGroupInformation.setConfiguration(conf);

  MemoryRMStateStore memStore = new MemoryRMStateStore();
  memStore.init(conf);
  RMState rmState = memStore.getState();

  Map<ApplicationId, ApplicationStateData> rmAppState =
      rmState.getApplicationState();
  MockRM rm1 = new TestSecurityMockRM(conf, memStore);
  rm1.start();
  MockNM nm1 =
      new MockNM("0.0.0.0:4321", 15120, rm1.getResourceTrackerService());
  nm1.registerNode();

  // submit an app
  RMApp app1 =
      rm1.submitApp(200, "name", "user",
        new HashMap<ApplicationAccessType, String>(), "default");

  // assert app info is saved
  ApplicationStateData appState = rmAppState.get(app1.getApplicationId());
  Assert.assertNotNull(appState);

  // Allocate the AM
  nm1.nodeHeartbeat(true);
  RMAppAttempt attempt1 = app1.getCurrentAppAttempt();
  ApplicationAttemptId attemptId1 = attempt1.getAppAttemptId();
  rm1.waitForState(attemptId1, RMAppAttemptState.ALLOCATED);

  // assert attempt info is saved
  ApplicationAttemptStateData attemptState = appState.getAttempt(attemptId1);
  Assert.assertNotNull(attemptState);
  Assert.assertEquals(BuilderUtils.newContainerId(attemptId1, 1),
    attemptState.getMasterContainer().getId());

  // the clientTokenMasterKey that are generated when
  // RMAppAttempt is created,
  byte[] clientTokenMasterKey =
      attempt1.getClientTokenMasterKey().getEncoded();

  // assert application credentials are saved
  Credentials savedCredentials = attemptState.getAppAttemptTokens();
  Assert.assertArrayEquals("client token master key not saved",
      clientTokenMasterKey, savedCredentials.getSecretKey(
          RMStateStore.AM_CLIENT_TOKEN_MASTER_KEY_NAME));

  // start new RM
  MockRM rm2 = new TestSecurityMockRM(conf, memStore);
  rm2.start();

  RMApp loadedApp1 =
      rm2.getRMContext().getRMApps().get(app1.getApplicationId());
  RMAppAttempt loadedAttempt1 = loadedApp1.getRMAppAttempt(attemptId1);

  // assert loaded attempt recovered
  Assert.assertNotNull(loadedAttempt1);

  // assert client token master key is recovered back to api-versioned
  // client token master key
  Assert.assertEquals("client token master key not restored",
      attempt1.getClientTokenMasterKey(),
      loadedAttempt1.getClientTokenMasterKey());

  // assert ClientTokenSecretManager also knows about the key
  Assert.assertArrayEquals(clientTokenMasterKey,
      rm2.getClientToAMTokenSecretManager().getMasterKey(attemptId1)
          .getEncoded());

  // assert AMRMTokenSecretManager also knows about the AMRMToken password
  Token<AMRMTokenIdentifier> amrmToken = loadedAttempt1.getAMRMToken();
  Assert.assertArrayEquals(amrmToken.getPassword(),
    rm2.getRMContext().getAMRMTokenSecretManager().retrievePassword(
      amrmToken.decodeIdentifier()));
}
 
开发者ID:naver,项目名称:hadoop,代码行数:80,代码来源:TestRMRestart.java

示例14: testFinishedAppRemovalAfterRMRestart

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
@Test (timeout = 60000)
public void testFinishedAppRemovalAfterRMRestart() throws Exception {
  MemoryRMStateStore memStore = new MemoryRMStateStore();
  conf.setInt(YarnConfiguration.RM_MAX_COMPLETED_APPLICATIONS, 1);
  memStore.init(conf);
  RMState rmState = memStore.getState();

  // start RM
  MockRM rm1 = createMockRM(conf, memStore);
  rm1.start();
  MockNM nm1 =
      new MockNM("127.0.0.1:1234", 15120, rm1.getResourceTrackerService());
  nm1.registerNode();

  // create an app and finish the app.
  RMApp app0 = rm1.submitApp(200);
  MockAM am0 = launchAM(app0, rm1, nm1);
  finishApplicationMaster(app0, rm1, nm1, am0);

  MockRM rm2 = createMockRM(conf, memStore);
  rm2.start();
  nm1.setResourceTrackerService(rm2.getResourceTrackerService());
  nm1 = rm2.registerNode("127.0.0.1:1234", 15120);

  Map<ApplicationId, ApplicationStateData> rmAppState =
      rmState.getApplicationState();

  // app0 exits in both state store and rmContext
  Assert.assertEquals(RMAppState.FINISHED,
    rmAppState.get(app0.getApplicationId()).getState());
  rm2.waitForState(app0.getApplicationId(), RMAppState.FINISHED);

  // create one more app and finish the app.
  RMApp app1 = rm2.submitApp(200);
  MockAM am1 = launchAM(app1, rm2, nm1);
  finishApplicationMaster(app1, rm2, nm1, am1);

  // the first app0 get kicked out from both rmContext and state store
  Assert.assertNull(rm2.getRMContext().getRMApps()
    .get(app0.getApplicationId()));
  Assert.assertNull(rmAppState.get(app0.getApplicationId()));
}
 
开发者ID:naver,项目名称:hadoop,代码行数:43,代码来源:TestRMRestart.java

示例15: testDelegationTokenRestoredInDelegationTokenRenewer

import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState; //导入方法依赖的package包/类
@Test (timeout = 60000)
public void testDelegationTokenRestoredInDelegationTokenRenewer()
    throws Exception {
  conf.setInt(YarnConfiguration.RM_AM_MAX_ATTEMPTS, 2);
  conf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION,
      "kerberos");
  UserGroupInformation.setConfiguration(conf);

  MemoryRMStateStore memStore = new MemoryRMStateStore();
  memStore.init(conf);
  RMState rmState = memStore.getState();

  Map<ApplicationId, ApplicationStateData> rmAppState =
      rmState.getApplicationState();
  MockRM rm1 = new TestSecurityMockRM(conf, memStore);
  rm1.start();

  HashSet<Token<RMDelegationTokenIdentifier>> tokenSet =
      new HashSet<Token<RMDelegationTokenIdentifier>>();

  // create an empty credential
  Credentials ts = new Credentials();

  // create tokens and add into credential
  Text userText1 = new Text("user1");
  RMDelegationTokenIdentifier dtId1 =
      new RMDelegationTokenIdentifier(userText1, new Text("renewer1"),
        userText1);
  Token<RMDelegationTokenIdentifier> token1 =
      new Token<RMDelegationTokenIdentifier>(dtId1,
        rm1.getRMContext().getRMDelegationTokenSecretManager());
  SecurityUtil.setTokenService(token1, rmAddr);
  ts.addToken(userText1, token1);
  tokenSet.add(token1);

  Text userText2 = new Text("user2");
  RMDelegationTokenIdentifier dtId2 =
      new RMDelegationTokenIdentifier(userText2, new Text("renewer2"),
        userText2);
  Token<RMDelegationTokenIdentifier> token2 =
      new Token<RMDelegationTokenIdentifier>(dtId2,
        rm1.getRMContext().getRMDelegationTokenSecretManager());
  SecurityUtil.setTokenService(token2, rmAddr);
  ts.addToken(userText2, token2);
  tokenSet.add(token2);

  // submit an app with customized credential
  RMApp app = rm1.submitApp(200, "name", "user",
      new HashMap<ApplicationAccessType, String>(), false, "default", 1, ts);

  // assert app info is saved
  ApplicationStateData appState = rmAppState.get(app.getApplicationId());
  Assert.assertNotNull(appState);

  // assert delegation tokens exist in rm1 DelegationTokenRenewr
  Assert.assertEquals(tokenSet, rm1.getRMContext()
    .getDelegationTokenRenewer().getDelegationTokens());

  // assert delegation tokens are saved
  DataOutputBuffer dob = new DataOutputBuffer();
  ts.writeTokenStorageToStream(dob);
  ByteBuffer securityTokens =
      ByteBuffer.wrap(dob.getData(), 0, dob.getLength());
  securityTokens.rewind();
  Assert.assertEquals(securityTokens, appState
    .getApplicationSubmissionContext().getAMContainerSpec()
    .getTokens());

  // start new RM
  MockRM rm2 = new TestSecurityMockRM(conf, memStore);
  rm2.start();

  // Need to wait for a while as now token renewal happens on another thread
  // and is asynchronous in nature.
  waitForTokensToBeRenewed(rm2, tokenSet);

  // verify tokens are properly populated back to rm2 DelegationTokenRenewer
  Assert.assertEquals(tokenSet, rm2.getRMContext()
    .getDelegationTokenRenewer().getDelegationTokens());
}
 
开发者ID:aliyun-beta,项目名称:aliyun-oss-hadoop-fs,代码行数:81,代码来源:TestRMRestart.java


注:本文中的org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState.getApplicationState方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。