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


Java SchedulerAppReport.getLiveContainers方法代码示例

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


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

示例1: checkTaskContainersHost

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerAppReport; //导入方法依赖的package包/类
private void checkTaskContainersHost(ApplicationAttemptId attemptId,
    ContainerId containerId, ResourceManager rm, String host) {
  YarnScheduler scheduler = rm.getRMContext().getScheduler();
  SchedulerAppReport appReport = scheduler.getSchedulerAppInfo(attemptId);

  Assert.assertTrue(appReport.getLiveContainers().size() > 0);
  for (RMContainer c : appReport.getLiveContainers()) {
    if (c.getContainerId().equals(containerId)) {
      Assert.assertEquals(host, c.getAllocatedNode().getHost());
    }
  }
}
 
开发者ID:naver,项目名称:hadoop,代码行数:13,代码来源:TestContainerAllocation.java

示例2: getApplicationResourceUsageReport

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerAppReport; //导入方法依赖的package包/类
@Override
public ApplicationResourceUsageReport getApplicationResourceUsageReport() {
  this.readLock.lock();
  
  try {
    int numUsedContainers = 0;
    int numReservedContainers = 0;
    Resource currentConsumption = Resources.createResource(0, 0);
    Resource reservedResources = Resources.createResource(0, 0);
    
    SchedulerAppReport schedApp = 
        scheduler.getSchedulerAppInfo(this.getAppAttemptId());
    Collection<RMContainer> liveContainers;
    Collection<RMContainer> reservedContainers;
    if (schedApp != null) {
      liveContainers = schedApp.getLiveContainers();
      reservedContainers = schedApp.getReservedContainers();
      if (liveContainers != null) {
        numUsedContainers = liveContainers.size();
        for (RMContainer lc : liveContainers) {
          Resources.addTo(currentConsumption, lc.getContainer().getResource());
        }
      }
      if (reservedContainers != null) {
        numReservedContainers = reservedContainers.size();
        for (RMContainer rc : reservedContainers) {
          Resources.addTo(reservedResources, rc.getContainer().getResource());
        }
      }
    }

    return BuilderUtils.newApplicationResourceUsageReport(
        numUsedContainers, numReservedContainers,
        currentConsumption, reservedResources,
        Resources.add(currentConsumption, reservedResources));
  } finally {
    this.readLock.unlock();
  }
}
 
开发者ID:ict-carch,项目名称:hadoop-plus,代码行数:40,代码来源:RMAppAttemptImpl.java

示例3: getContainers

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerAppReport; //导入方法依赖的package包/类
@Override
public GetContainersResponse getContainers(GetContainersRequest request)
    throws YarnException, IOException {
  ApplicationAttemptId appAttemptId = request.getApplicationAttemptId();
  ApplicationId appId = appAttemptId.getApplicationId();
  UserGroupInformation callerUGI;
  try {
    callerUGI = UserGroupInformation.getCurrentUser();
  } catch (IOException ie) {
    LOG.info("Error getting UGI ", ie);
    throw RPCUtil.getRemoteException(ie);
  }
  RMApp application = this.rmContext.getRMApps().get(appId);
  if (application == null) {
    // If the RM doesn't have the application, throw
    // ApplicationNotFoundException and let client to handle.
    throw new ApplicationNotFoundException("Application with id '" + appId
        + "' doesn't exist in RM.");
  }
  boolean allowAccess = checkAccess(callerUGI, application.getUser(),
      ApplicationAccessType.VIEW_APP, application);
  GetContainersResponse response = null;
  if (allowAccess) {
    RMAppAttempt appAttempt = application.getAppAttempts().get(appAttemptId);
    if (appAttempt == null) {
      throw new ApplicationAttemptNotFoundException(
          "ApplicationAttempt with id '" + appAttemptId +
          "' doesn't exist in RM.");
    }
    Collection<RMContainer> rmContainers = Collections.emptyList();
    SchedulerAppReport schedulerAppReport =
        this.rmContext.getScheduler().getSchedulerAppInfo(appAttemptId);
    if (schedulerAppReport != null) {
      rmContainers = schedulerAppReport.getLiveContainers();
    }
    List<ContainerReport> listContainers = new ArrayList<ContainerReport>();
    for (RMContainer rmContainer : rmContainers) {
      listContainers.add(rmContainer.createContainerReport());
    }
    response = GetContainersResponse.newInstance(listContainers);
  } else {
    throw new YarnException("User " + callerUGI.getShortUserName()
        + " does not have privilage to see this aplication " + appId);
  }
  return response;
}
 
开发者ID:naver,项目名称:hadoop,代码行数:47,代码来源:ClientRMService.java

示例4: updateQueueWithNodeUpdate

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerAppReport; //导入方法依赖的package包/类
private void updateQueueWithNodeUpdate(
        NodeUpdateSchedulerEventWrapper eventWrapper) {
  RMNodeWrapper node = (RMNodeWrapper) eventWrapper.getRMNode();
  List<UpdatedContainerInfo> containerList = node.getContainerUpdates();
  for (UpdatedContainerInfo info : containerList) {
    for (ContainerStatus status : info.getCompletedContainers()) {
      ContainerId containerId = status.getContainerId();
      SchedulerAppReport app = scheduler.getSchedulerAppInfo(
              containerId.getApplicationAttemptId());

      if (app == null) {
        // this happens for the AM container
        // The app have already removed when the NM sends the release
        // information.
        continue;
      }

      String queue =
          appQueueMap.get(containerId.getApplicationAttemptId()
            .getApplicationId());
      int releasedMemory = 0, releasedVCores = 0;
      if (status.getExitStatus() == ContainerExitStatus.SUCCESS) {
        for (RMContainer rmc : app.getLiveContainers()) {
          if (rmc.getContainerId() == containerId) {
            releasedMemory += rmc.getContainer().getResource().getMemory();
            releasedVCores += rmc.getContainer()
                    .getResource().getVirtualCores();
            break;
          }
        }
      } else if (status.getExitStatus() == ContainerExitStatus.ABORTED) {
        if (preemptionContainerMap.containsKey(containerId)) {
          Resource preResource = preemptionContainerMap.get(containerId);
          releasedMemory += preResource.getMemory();
          releasedVCores += preResource.getVirtualCores();
          preemptionContainerMap.remove(containerId);
        }
      }
      // update queue counters
      updateQueueMetrics(queue, releasedMemory, releasedVCores);
    }
  }
}
 
开发者ID:naver,项目名称:hadoop,代码行数:44,代码来源:ResourceSchedulerWrapper.java

示例5: updateQueueWithNodeUpdate

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerAppReport; //导入方法依赖的package包/类
private void updateQueueWithNodeUpdate(
        NodeUpdateSchedulerEventWrapper eventWrapper) {
  RMNodeWrapper node = (RMNodeWrapper) eventWrapper.getRMNode();
  List<UpdatedContainerInfo> containerList = node.getContainerUpdates();
  for (UpdatedContainerInfo info : containerList) {
    for (ContainerStatus status : info.getCompletedContainers()) {
      ContainerId containerId = status.getContainerId();
      SchedulerAppReport app = super.getSchedulerAppInfo(
              containerId.getApplicationAttemptId());

      if (app == null) {
        // this happens for the AM container
        // The app have already removed when the NM sends the release
        // information.
        continue;
      }

      String queue = appQueueMap.get(containerId.getApplicationAttemptId());
      int releasedMemory = 0, releasedVCores = 0;
      if (status.getExitStatus() == ContainerExitStatus.SUCCESS) {
        for (RMContainer rmc : app.getLiveContainers()) {
          if (rmc.getContainerId() == containerId) {
            releasedMemory += rmc.getContainer().getResource().getMemory();
            releasedVCores += rmc.getContainer()
                    .getResource().getVirtualCores();
            break;
          }
        }
      } else if (status.getExitStatus() == ContainerExitStatus.ABORTED) {
        if (preemptionContainerMap.containsKey(containerId)) {
          Resource preResource = preemptionContainerMap.get(containerId);
          releasedMemory += preResource.getMemory();
          releasedVCores += preResource.getVirtualCores();
          preemptionContainerMap.remove(containerId);
        }
      }
      // update queue counters
      updateQueueMetrics(queue, releasedMemory, releasedVCores);
    }
  }
}
 
开发者ID:aliyun-beta,项目名称:aliyun-oss-hadoop-fs,代码行数:42,代码来源:SLSCapacityScheduler.java

示例6: getContainers

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerAppReport; //导入方法依赖的package包/类
@Override
public GetContainersResponse getContainers(GetContainersRequest request)
    throws YarnException, IOException {
  ApplicationAttemptId appAttemptId = request.getApplicationAttemptId();
  ApplicationId appId = appAttemptId.getApplicationId();
  UserGroupInformation callerUGI;
  try {
    callerUGI = UserGroupInformation.getCurrentUser();
  } catch (IOException ie) {
    LOG.info("Error getting UGI ", ie);
    throw RPCUtil.getRemoteException(ie);
  }
  RMApp application = this.rmContext.getRMApps().get(appId);
  if (application == null) {
    // If the RM doesn't have the application, throw
    // ApplicationNotFoundException and let client to handle.
    throw new ApplicationNotFoundException("Application with id '" + appId
        + "' doesn't exist in RM.");
  }
  boolean allowAccess = checkAccess(callerUGI, application.getUser(),
      ApplicationAccessType.VIEW_APP, application);
  GetContainersResponse response = null;
  if (allowAccess) {
    RMAppAttempt appAttempt = application.getAppAttempts().get(appAttemptId);
    if (appAttempt == null) {
      throw new ApplicationAttemptNotFoundException("ApplicationAttempt "
          + appAttemptId + " Not Found in RM");
    }
    Collection<RMContainer> rmContainers = Collections.emptyList();
    SchedulerAppReport schedulerAppReport =
        this.rmContext.getScheduler().getSchedulerAppInfo(appAttemptId);
    if (schedulerAppReport != null) {
      rmContainers = schedulerAppReport.getLiveContainers();
    }
    List<ContainerReport> listContainers = new ArrayList<ContainerReport>();
    for (RMContainer rmContainer : rmContainers) {
      listContainers.add(rmContainer.createContainerReport());
    }
    response = GetContainersResponse.newInstance(listContainers);
  } else {
    throw new YarnException("User " + callerUGI.getShortUserName()
        + " does not have privilage to see this aplication " + appId);
  }
  return response;
}
 
开发者ID:Nextzero,项目名称:hadoop-2.6.0-cdh5.4.3,代码行数:46,代码来源:ClientRMService.java

示例7: getContainers

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerAppReport; //导入方法依赖的package包/类
@Override
public GetContainersResponse getContainers(GetContainersRequest request)
    throws YarnException, IOException {
  ApplicationAttemptId appAttemptId = request.getApplicationAttemptId();
  ApplicationId appId = appAttemptId.getApplicationId();
  UserGroupInformation callerUGI;
  try {
    callerUGI = UserGroupInformation.getCurrentUser();
  } catch (IOException ie) {
    LOG.info("Error getting UGI ", ie);
    throw RPCUtil.getRemoteException(ie);
  }
  RMApp application = this.rmContext.getRMApps().get(appId);
  if (application == null) {
    // If the RM doesn't have the application, throw
    // ApplicationNotFoundException and let client to handle.
    throw new ApplicationNotFoundException("Application with id '" + appId
        + "' doesn't exist in RM.");
  }
  boolean allowAccess = checkAccess(callerUGI, application.getUser(),
      ApplicationAccessType.VIEW_APP, application);
  GetContainersResponse response = null;
  if (allowAccess) {
    RMAppAttempt appAttempt = application.getAppAttempts().get(appAttemptId);
    if (appAttempt == null) {
      throw new ApplicationAttemptNotFoundException(
          "ApplicationAttempt with id '" + appAttemptId +
          "' doesn't exist in RM.");
    }
    Collection<RMContainer> rmContainers = Collections.emptyList();
    SchedulerAppReport schedulerAppReport =
        this.rmContext.getScheduler().getSchedulerAppInfo(appAttemptId);
    if (schedulerAppReport != null) {
      rmContainers = schedulerAppReport.getLiveContainers();
    }
    List<ContainerReport> listContainers = new ArrayList<ContainerReport>();
    for (RMContainer rmContainer : rmContainers) {
      listContainers.add(rmContainer.createContainerReport());
    }
    response = GetContainersResponse.newInstance(listContainers);
  } else {
    throw new YarnException("User " + callerUGI.getShortUserName()
        + " does not have privilage to see this application " + appId);
  }
  return response;
}
 
开发者ID:hopshadoop,项目名称:hops,代码行数:47,代码来源:ClientRMService.java

示例8: updateQueueWithNodeUpdate

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerAppReport; //导入方法依赖的package包/类
private void updateQueueWithNodeUpdate(
        NodeUpdateSchedulerEventWrapper eventWrapper) {
  RMNodeWrapper node = (RMNodeWrapper) eventWrapper.getRMNode();
  List<UpdatedContainerInfo> containerList = node.getContainerUpdates();
  for (UpdatedContainerInfo info : containerList) {
    for (ContainerStatus status : info.getCompletedContainers()) {
      ContainerId containerId = status.getContainerId();
      SchedulerAppReport app = scheduler.getSchedulerAppInfo(
              containerId.getApplicationAttemptId());

      if (app == null) {
        // this happens for the AM container
        // The app have already removed when the NM sends the release
        // information.
        continue;
      }

      String queue =
          appQueueMap.get(containerId.getApplicationAttemptId()
            .getApplicationId());
      int releasedMemory = 0, releasedVCores = 0;
      if (status.getExitStatus() == ContainerExitStatus.SUCCESS) {
        for (RMContainer rmc : app.getLiveContainers()) {
          if (rmc.getContainerId() == containerId) {
            releasedMemory += rmc.getContainer().getResource().getMemorySize();
            releasedVCores += rmc.getContainer()
                    .getResource().getVirtualCores();
            break;
          }
        }
      } else if (status.getExitStatus() == ContainerExitStatus.ABORTED) {
        if (preemptionContainerMap.containsKey(containerId)) {
          Resource preResource = preemptionContainerMap.get(containerId);
          releasedMemory += preResource.getMemorySize();
          releasedVCores += preResource.getVirtualCores();
          preemptionContainerMap.remove(containerId);
        }
      }
      // update queue counters
      updateQueueMetrics(queue, releasedMemory, releasedVCores);
    }
  }
}
 
开发者ID:hopshadoop,项目名称:hops,代码行数:44,代码来源:ResourceSchedulerWrapper.java


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