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


Java RMAppMoveEvent类代码示例

本文整理汇总了Java中org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppMoveEvent的典型用法代码示例。如果您正苦于以下问题:Java RMAppMoveEvent类的具体用法?Java RMAppMoveEvent怎么用?Java RMAppMoveEvent使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


RMAppMoveEvent类属于org.apache.hadoop.yarn.server.resourcemanager.rmapp包,在下文中一共展示了RMAppMoveEvent类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: moveAllApps

import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppMoveEvent; //导入依赖的package包/类
@Override
public synchronized void moveAllApps(String sourceQueue, String destQueue)
    throws YarnException {
  // check if destination queue is a valid leaf queue
  try {
    getQueueInfo(destQueue, false, false);
  } catch (IOException e) {
    LOG.warn(e);
    throw new YarnException(e);
  }
  // check if source queue is a valid
  List<ApplicationAttemptId> apps = getAppsInQueue(sourceQueue);
  if (apps == null) {
    String errMsg = "The specified Queue: " + sourceQueue + " doesn't exist";
    LOG.warn(errMsg);
    throw new YarnException(errMsg);
  }
  // generate move events for each pending/running app
  for (ApplicationAttemptId app : apps) {
    SettableFuture<Object> future = SettableFuture.create();
    this.rmContext
        .getDispatcher()
        .getEventHandler()
        .handle(new RMAppMoveEvent(app.getApplicationId(), destQueue, future));
  }
}
 
开发者ID:aliyun-beta,项目名称:aliyun-oss-hadoop-fs,代码行数:27,代码来源:AbstractYarnScheduler.java

示例2: moveApplicationAcrossQueues

import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppMoveEvent; //导入依赖的package包/类
@SuppressWarnings("unchecked")
@Override
public MoveApplicationAcrossQueuesResponse moveApplicationAcrossQueues(
    MoveApplicationAcrossQueuesRequest request) throws YarnException {
  ApplicationId applicationId = request.getApplicationId();

  UserGroupInformation callerUGI;
  try {
    callerUGI = UserGroupInformation.getCurrentUser();
  } catch (IOException ie) {
    LOG.info("Error getting UGI ", ie);
    RMAuditLogger.logFailure("UNKNOWN", AuditConstants.MOVE_APP_REQUEST,
        "UNKNOWN", "ClientRMService" , "Error getting UGI",
        applicationId);
    throw RPCUtil.getRemoteException(ie);
  }

  RMApp application = this.rmContext.getRMApps().get(applicationId);
  if (application == null) {
    RMAuditLogger.logFailure(callerUGI.getUserName(),
        AuditConstants.MOVE_APP_REQUEST, "UNKNOWN", "ClientRMService",
        "Trying to move an absent application", applicationId);
    throw new ApplicationNotFoundException("Trying to move an absent"
        + " application " + applicationId);
  }

  if (!checkAccess(callerUGI, application.getUser(),
      ApplicationAccessType.MODIFY_APP, application)) {
    RMAuditLogger.logFailure(callerUGI.getShortUserName(),
        AuditConstants.MOVE_APP_REQUEST,
        "User doesn't have permissions to "
            + ApplicationAccessType.MODIFY_APP.toString(), "ClientRMService",
        AuditConstants.UNAUTHORIZED_USER, applicationId);
    throw RPCUtil.getRemoteException(new AccessControlException("User "
        + callerUGI.getShortUserName() + " cannot perform operation "
        + ApplicationAccessType.MODIFY_APP.name() + " on " + applicationId));
  }
  
  // Moves only allowed when app is in a state that means it is tracked by
  // the scheduler
  if (EnumSet.of(RMAppState.NEW, RMAppState.NEW_SAVING, RMAppState.FAILED,
      RMAppState.FINAL_SAVING, RMAppState.FINISHING, RMAppState.FINISHED,
      RMAppState.KILLED, RMAppState.KILLING, RMAppState.FAILED)
      .contains(application.getState())) {
    String msg = "App in " + application.getState() + " state cannot be moved.";
    RMAuditLogger.logFailure(callerUGI.getShortUserName(),
        AuditConstants.MOVE_APP_REQUEST, "UNKNOWN", "ClientRMService", msg);
    throw new YarnException(msg);
  }

  SettableFuture<Object> future = SettableFuture.create();
  this.rmContext.getDispatcher().getEventHandler().handle(
      new RMAppMoveEvent(applicationId, request.getTargetQueue(), future));
  
  try {
    Futures.get(future, YarnException.class);
  } catch (YarnException ex) {
    RMAuditLogger.logFailure(callerUGI.getShortUserName(),
        AuditConstants.MOVE_APP_REQUEST, "UNKNOWN", "ClientRMService",
        ex.getMessage());
    throw ex;
  }

  RMAuditLogger.logSuccess(callerUGI.getShortUserName(), 
      AuditConstants.MOVE_APP_REQUEST, "ClientRMService" , applicationId);
  MoveApplicationAcrossQueuesResponse response = recordFactory
      .newRecordInstance(MoveApplicationAcrossQueuesResponse.class);
  return response;
}
 
开发者ID:naver,项目名称:hadoop,代码行数:70,代码来源:ClientRMService.java


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