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


Java ApplicationMasterProtocol.allocate方法代码示例

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


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

示例1: testValidateResourceBlacklistRequest

import org.apache.hadoop.yarn.api.ApplicationMasterProtocol; //导入方法依赖的package包/类
@Test
public void testValidateResourceBlacklistRequest() throws Exception {

  MyContainerManager containerManager = new MyContainerManager();
  final MockRMWithAMS rm =
      new MockRMWithAMS(new YarnConfiguration(), containerManager);
  rm.start();

  MockNM nm1 = rm.registerNode("localhost:1234", 5120);

  Map<ApplicationAccessType, String> acls =
      new HashMap<ApplicationAccessType, String>(2);
  acls.put(ApplicationAccessType.VIEW_APP, "*");
  RMApp app = rm.submitApp(1024, "appname", "appuser", acls);

  nm1.nodeHeartbeat(true);

  RMAppAttempt attempt = app.getCurrentAppAttempt();
  ApplicationAttemptId applicationAttemptId = attempt.getAppAttemptId();
  waitForLaunchedState(attempt);

  // Create a client to the RM.
  final Configuration conf = rm.getConfig();
  final YarnRPC rpc = YarnRPC.create(conf);

  UserGroupInformation currentUser = 
      UserGroupInformation.createRemoteUser(applicationAttemptId.toString());
  Credentials credentials = containerManager.getContainerCredentials();
  final InetSocketAddress rmBindAddress =
      rm.getApplicationMasterService().getBindAddress();
  Token<? extends TokenIdentifier> amRMToken =
      MockRMWithAMS.setupAndReturnAMRMToken(rmBindAddress,
        credentials.getAllTokens());
  currentUser.addToken(amRMToken);
  ApplicationMasterProtocol client =
      currentUser.doAs(new PrivilegedAction<ApplicationMasterProtocol>() {
        @Override
        public ApplicationMasterProtocol run() {
          return (ApplicationMasterProtocol) rpc.getProxy(
            ApplicationMasterProtocol.class, rmBindAddress, conf);
        }
      });

  RegisterApplicationMasterRequest request = Records
      .newRecord(RegisterApplicationMasterRequest.class);
  client.registerApplicationMaster(request);

  ResourceBlacklistRequest blacklistRequest =
      ResourceBlacklistRequest.newInstance(
          Collections.singletonList(ResourceRequest.ANY), null);

  AllocateRequest allocateRequest =
      AllocateRequest.newInstance(0, 0.0f, null, null, blacklistRequest);
  boolean error = false;
  try {
    client.allocate(allocateRequest);
  } catch (InvalidResourceBlacklistRequestException e) {
    error = true;
  }

  rm.stop();
  
  Assert.assertTrue(
      "Didn't not catch InvalidResourceBlacklistRequestException", error);
}
 
开发者ID:naver,项目名称:hadoop,代码行数:66,代码来源:TestSchedulerUtils.java

示例2: testValidateResourceBlacklistRequest

import org.apache.hadoop.yarn.api.ApplicationMasterProtocol; //导入方法依赖的package包/类
@Test
public void testValidateResourceBlacklistRequest() throws Exception {

  final Configuration conf = new YarnConfiguration();
  RMStorageFactory.setConfiguration(conf);
  YarnAPIStorageFactory.setConfiguration(conf);
  DBUtility.InitializeDB();

  MyContainerManager containerManager = new MyContainerManager();
  final MockRMWithAMS rm =
      new MockRMWithAMS(conf, containerManager);
  rm.start();

  MockNM nm1 = rm.registerNode("localhost:1234", 5120);

  Map<ApplicationAccessType, String> acls =
      new HashMap<ApplicationAccessType, String>(2);
  acls.put(ApplicationAccessType.VIEW_APP, "*");
  RMApp app = rm.submitApp(1024, "appname", "appuser", acls);

  nm1.nodeHeartbeat(true);

  RMAppAttempt attempt = app.getCurrentAppAttempt();
  ApplicationAttemptId applicationAttemptId = attempt.getAppAttemptId();
  waitForLaunchedState(attempt);

  // Create a client to the RM.
  final YarnRPC rpc = YarnRPC.create(conf);

  UserGroupInformation currentUser = 
      UserGroupInformation.createRemoteUser(applicationAttemptId.toString(), false);
  Credentials credentials = containerManager.getContainerCredentials();
  final InetSocketAddress rmBindAddress =
      rm.getApplicationMasterService().getBindAddress();
  Token<? extends TokenIdentifier> amRMToken =
      MockRMWithAMS.setupAndReturnAMRMToken(rmBindAddress,
        credentials.getAllTokens());
  currentUser.addToken(amRMToken);
  ApplicationMasterProtocol client =
      currentUser.doAs(new PrivilegedAction<ApplicationMasterProtocol>() {
        @Override
        public ApplicationMasterProtocol run() {
          return (ApplicationMasterProtocol) rpc.getProxy(
            ApplicationMasterProtocol.class, rmBindAddress, conf);
        }
      });

  RegisterApplicationMasterRequest request = Records
      .newRecord(RegisterApplicationMasterRequest.class);
  client.registerApplicationMaster(request);

  ResourceBlacklistRequest blacklistRequest =
      ResourceBlacklistRequest.newInstance(
          Collections.singletonList(ResourceRequest.ANY), null);

  AllocateRequest allocateRequest =
      AllocateRequest.newInstance(0, 0.0f, null, null, blacklistRequest);
  boolean error = false;
  try {
    client.allocate(allocateRequest);
  } catch (InvalidResourceBlacklistRequestException e) {
    error = true;
  }

  rm.stop();
  
  Assert.assertTrue(
      "Didn't not catch InvalidResourceBlacklistRequestException", error);
}
 
开发者ID:hopshadoop,项目名称:hops,代码行数:70,代码来源:TestSchedulerUtils.java

示例3: testAMRMProxyE2E

import org.apache.hadoop.yarn.api.ApplicationMasterProtocol; //导入方法依赖的package包/类
@Test(timeout = 60000)
public void testAMRMProxyE2E() throws Exception {
  ApplicationMasterProtocol client;

  try (MiniYARNCluster cluster = new MiniYARNCluster("testAMRMProxyE2E",
      1, 1, 1);
          YarnClient rmClient = YarnClient.createYarnClient()) {
    Configuration conf = new YarnConfiguration();
    conf.setBoolean(YarnConfiguration.AMRM_PROXY_ENABLED, true);
    cluster.init(conf);
    cluster.start();
    final Configuration yarnConf = cluster.getConfig();

    // the client has to connect to AMRMProxy

    yarnConf.set(YarnConfiguration.RM_SCHEDULER_ADDRESS,
        YarnConfiguration.DEFAULT_AMRM_PROXY_ADDRESS);
    rmClient.init(yarnConf);
    rmClient.start();

    // Submit application

    ApplicationId appId = createApp(rmClient, cluster);

    client = createAMRMProtocol(rmClient, appId, cluster, yarnConf);

    LOG.info("testAMRMProxyE2E - Register Application Master");

    RegisterApplicationMasterResponse responseRegister =
        client.registerApplicationMaster(RegisterApplicationMasterRequest
            .newInstance(NetUtils.getHostname(), 1024, ""));

    Assert.assertNotNull(responseRegister);
    Assert.assertNotNull(responseRegister.getQueue());
    Assert.assertNotNull(responseRegister.getApplicationACLs());
    Assert.assertNotNull(responseRegister.getClientToAMTokenMasterKey());
    Assert
        .assertNotNull(responseRegister.getContainersFromPreviousAttempts());
    Assert.assertNotNull(responseRegister.getSchedulerResourceTypes());
    Assert.assertNotNull(responseRegister.getMaximumResourceCapability());

    RMApp rmApp =
        cluster.getResourceManager().getRMContext().getRMApps().get(appId);
    Assert.assertEquals(RMAppState.RUNNING, rmApp.getState());

    LOG.info("testAMRMProxyE2E - Allocate Resources Application Master");

    AllocateRequest request =
        createAllocateRequest(rmClient.getNodeReports(NodeState.RUNNING));

    AllocateResponse allocResponse = client.allocate(request);
    Assert.assertNotNull(allocResponse);
    Assert.assertEquals(0, allocResponse.getAllocatedContainers().size());

    request.setAskList(new ArrayList<ResourceRequest>());
    request.setResponseId(request.getResponseId() + 1);

    Thread.sleep(1000);

    // RM should allocate container within 2 calls to allocate()
    allocResponse = client.allocate(request);
    Assert.assertNotNull(allocResponse);
    Assert.assertEquals(2, allocResponse.getAllocatedContainers().size());

    LOG.info("testAMRMPRoxy - Finish Application Master");

    FinishApplicationMasterResponse responseFinish =
        client.finishApplicationMaster(FinishApplicationMasterRequest
            .newInstance(FinalApplicationStatus.SUCCEEDED, "success", null));

    Assert.assertNotNull(responseFinish);

    Thread.sleep(500);
    Assert.assertNotEquals(RMAppState.FINISHED, rmApp.getState());

  }
}
 
开发者ID:hopshadoop,项目名称:hops,代码行数:78,代码来源:TestAMRMProxy.java

示例4: testE2ETokenRenewal

import org.apache.hadoop.yarn.api.ApplicationMasterProtocol; //导入方法依赖的package包/类
@Test(timeout = 60000)
public void testE2ETokenRenewal() throws Exception {
  ApplicationMasterProtocol client;

  try (MiniYARNCluster cluster =
      new MiniYARNCluster("testE2ETokenRenewal", 1, 1, 1);
         YarnClient rmClient = YarnClient.createYarnClient()) {
    Configuration conf = new YarnConfiguration();
    conf.setBoolean(YarnConfiguration.AMRM_PROXY_ENABLED, true);
    conf.setInt(YarnConfiguration.RM_NM_EXPIRY_INTERVAL_MS, 1500);
    conf.setInt(YarnConfiguration.RM_NM_HEARTBEAT_INTERVAL_MS, 1500);
    conf.setInt(YarnConfiguration.RM_AM_EXPIRY_INTERVAL_MS, 1500);
    // RM_AMRM_TOKEN_MASTER_KEY_ROLLING_INTERVAL_SECS should be at least
    // RM_AM_EXPIRY_INTERVAL_MS * 1.5 *3
    conf.setInt(
        YarnConfiguration.RM_AMRM_TOKEN_MASTER_KEY_ROLLING_INTERVAL_SECS, 6);
    cluster.init(conf);
    cluster.start();
    final Configuration yarnConf = cluster.getConfig();
    yarnConf.set(YarnConfiguration.RM_SCHEDULER_ADDRESS,
        YarnConfiguration.DEFAULT_AMRM_PROXY_ADDRESS);
    rmClient.init(yarnConf);
    rmClient.start();

    // Submit

    ApplicationId appId = createApp(rmClient, cluster);

    client = createAMRMProtocol(rmClient, appId, cluster, yarnConf);

    client.registerApplicationMaster(RegisterApplicationMasterRequest
        .newInstance(NetUtils.getHostname(), 1024, ""));

    LOG.info("testAMRMPRoxy - Allocate Resources Application Master");

    AllocateRequest request =
        createAllocateRequest(rmClient.getNodeReports(NodeState.RUNNING));

    Token lastToken = null;
    AllocateResponse response = null;

    for (int i = 0; i < 5; i++) {

      response = client.allocate(request);
      request.setResponseId(request.getResponseId() + 1);

      if (response.getAMRMToken() != null
          && !response.getAMRMToken().equals(lastToken)) {
        break;
      }

      lastToken = response.getAMRMToken();

      // Time slot to be sure the RM renew the token
      Thread.sleep(1500);

    }

    Assert.assertFalse(response.getAMRMToken().equals(lastToken));

    LOG.info("testAMRMPRoxy - Finish Application Master");

    client.finishApplicationMaster(FinishApplicationMasterRequest
        .newInstance(FinalApplicationStatus.SUCCEEDED, "success", null));

  }
}
 
开发者ID:hopshadoop,项目名称:hops,代码行数:68,代码来源:TestAMRMProxy.java


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