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


Java ContainerPreemptEventType类代码示例

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


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

示例1: createPolicyMonitors

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ContainerPreemptEventType; //导入依赖的package包/类
protected void createPolicyMonitors() {
  if (scheduler instanceof PreemptableResourceScheduler
      && conf.getBoolean(YarnConfiguration.RM_SCHEDULER_ENABLE_MONITORS,
      YarnConfiguration.DEFAULT_RM_SCHEDULER_ENABLE_MONITORS)) {
    LOG.info("Loading policy monitors");
    List<SchedulingEditPolicy> policies = conf.getInstances(
        YarnConfiguration.RM_SCHEDULER_MONITOR_POLICIES,
        SchedulingEditPolicy.class);
    if (policies.size() > 0) {
      rmDispatcher.register(ContainerPreemptEventType.class,
          new RMContainerPreemptEventDispatcher(
              (PreemptableResourceScheduler) scheduler));
      for (SchedulingEditPolicy policy : policies) {
        LOG.info("LOADING SchedulingEditPolicy:" + policy.getPolicyName());
        // periodically check whether we need to take action to guarantee
        // constraints
        SchedulingMonitor mon = new SchedulingMonitor(rmContext, policy);
        addService(mon);
      }
    } else {
      LOG.warn("Policy monitors configured (" +
          YarnConfiguration.RM_SCHEDULER_ENABLE_MONITORS +
          ") but none specified (" +
          YarnConfiguration.RM_SCHEDULER_MONITOR_POLICIES + ")");
    }
  }
}
 
开发者ID:Nextzero,项目名称:hadoop-2.6.0-cdh5.4.3,代码行数:28,代码来源:ResourceManager.java

示例2: createPolicyMonitors

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ContainerPreemptEventType; //导入依赖的package包/类
protected void createPolicyMonitors() {
  if (scheduler instanceof PreemptableResourceScheduler
      && conf.getBoolean(YarnConfiguration.RM_SCHEDULER_ENABLE_MONITORS,
        YarnConfiguration.DEFAULT_RM_SCHEDULER_ENABLE_MONITORS)) {
    LOG.info("Loading policy monitors");
    List<SchedulingEditPolicy> policies = conf.getInstances(
            YarnConfiguration.RM_SCHEDULER_MONITOR_POLICIES,
            SchedulingEditPolicy.class);
    if (policies.size() > 0) {
      this.rmDispatcher.register(ContainerPreemptEventType.class,
        new RMContainerPreemptEventDispatcher(
          (PreemptableResourceScheduler) scheduler));
      for (SchedulingEditPolicy policy : policies) {
        LOG.info("LOADING SchedulingEditPolicy:" + policy.getPolicyName());
        policy.init(conf, this.rmContext.getDispatcher().getEventHandler(),
            (PreemptableResourceScheduler) scheduler);
        // periodically check whether we need to take action to guarantee
        // constraints
        SchedulingMonitor mon = new SchedulingMonitor(policy);
        addService(mon);

      }
    } else {
      LOG.warn("Policy monitors configured (" +
          YarnConfiguration.RM_SCHEDULER_ENABLE_MONITORS +
          ") but none specified (" +
          YarnConfiguration.RM_SCHEDULER_MONITOR_POLICIES + ")");
    }
  }
}
 
开发者ID:ict-carch,项目名称:hadoop-plus,代码行数:31,代码来源:ResourceManager.java

示例3: createPolicyMonitors

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ContainerPreemptEventType; //导入依赖的package包/类
protected void createPolicyMonitors() {
  if (scheduler instanceof PreemptableResourceScheduler
      && conf.getBoolean(YarnConfiguration.RM_SCHEDULER_ENABLE_MONITORS,
      YarnConfiguration.DEFAULT_RM_SCHEDULER_ENABLE_MONITORS)) {
    LOG.info("Loading policy monitors");
    List<SchedulingEditPolicy> policies = conf.getInstances(
        YarnConfiguration.RM_SCHEDULER_MONITOR_POLICIES,
        SchedulingEditPolicy.class);
    if (policies.size() > 0) {
      rmDispatcher.register(ContainerPreemptEventType.class,
          new RMContainerPreemptEventDispatcher(
              (PreemptableResourceScheduler) scheduler));
      for (SchedulingEditPolicy policy : policies) {
        LOG.info("LOADING SchedulingEditPolicy:" + policy.getPolicyName());
        policy.init(conf, rmContext.getDispatcher().getEventHandler(),
            (PreemptableResourceScheduler) scheduler);
        // periodically check whether we need to take action to guarantee
        // constraints
        SchedulingMonitor mon = new SchedulingMonitor(policy);
        addService(mon);
      }
    } else {
      LOG.warn("Policy monitors configured (" +
          YarnConfiguration.RM_SCHEDULER_ENABLE_MONITORS +
          ") but none specified (" +
          YarnConfiguration.RM_SCHEDULER_MONITOR_POLICIES + ")");
    }
  }
}
 
开发者ID:Seagate,项目名称:hadoop-on-lustre2,代码行数:30,代码来源:ResourceManager.java

示例4: containerBasedPreemptOrKill

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ContainerPreemptEventType; //导入依赖的package包/类
/**
 * This method selects and tracks containers to be preempted. If a container
 * is in the target list for more than maxWaitTime it is killed.
 *
 * @param root the root of the CapacityScheduler queue hierarchy
 * @param clusterResources the total amount of resources in the cluster
 */
private void containerBasedPreemptOrKill(CSQueue root,
    Resource clusterResources) {

  // extract a summary of the queues from scheduler
  TempQueue tRoot;
  synchronized (scheduler) {
    tRoot = cloneQueues(root, clusterResources);
  }

  // compute the ideal distribution of resources among queues
  // updates cloned queues state accordingly
  tRoot.idealAssigned = tRoot.guaranteed;
  Resource totalPreemptionAllowed = Resources.multiply(clusterResources,
      percentageClusterPreemptionAllowed);
  List<TempQueue> queues =
    recursivelyComputeIdealAssignment(tRoot, totalPreemptionAllowed);

  // based on ideal allocation select containers to be preempted from each
  // queue and each application
  Map<ApplicationAttemptId,Set<RMContainer>> toPreempt =
      getContainersToPreempt(queues, clusterResources);

  if (LOG.isDebugEnabled()) {
    logToCSV(queues);
  }

  // if we are in observeOnly mode return before any action is taken
  if (observeOnly) {
    return;
  }

  // preempt (or kill) the selected containers
  for (Map.Entry<ApplicationAttemptId,Set<RMContainer>> e
       : toPreempt.entrySet()) {
    for (RMContainer container : e.getValue()) {
      // if we tried to preempt this for more than maxWaitTime
      if (preempted.get(container) != null &&
          preempted.get(container) + maxWaitTime < clock.getTime()) {
        // kill it
        dispatcher.handle(new ContainerPreemptEvent(e.getKey(), container,
              ContainerPreemptEventType.KILL_CONTAINER));
        preempted.remove(container);
      } else {
        //otherwise just send preemption events
        dispatcher.handle(new ContainerPreemptEvent(e.getKey(), container,
              ContainerPreemptEventType.PREEMPT_CONTAINER));
        if (preempted.get(container) == null) {
          preempted.put(container, clock.getTime());
        }
      }
    }
  }

  // Keep the preempted list clean
  for (Iterator<RMContainer> i = preempted.keySet().iterator(); i.hasNext();){
    RMContainer id = i.next();
    // garbage collect containers that are irrelevant for preemption
    if (preempted.get(id) + 2 * maxWaitTime < clock.getTime()) {
      i.remove();
    }
  }
}
 
开发者ID:naver,项目名称:hadoop,代码行数:70,代码来源:ProportionalCapacityPreemptionPolicy.java

示例5: IsPreemptionRequestFor

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ContainerPreemptEventType; //导入依赖的package包/类
IsPreemptionRequestFor(ApplicationAttemptId appAttId,
    ContainerPreemptEventType type) {
  this.appAttId = appAttId;
  this.type = type;
}
 
开发者ID:naver,项目名称:hadoop,代码行数:6,代码来源:TestProportionalCapacityPreemptionPolicy.java

示例6: containerBasedPreemptOrKill

import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ContainerPreemptEventType; //导入依赖的package包/类
/**
 * This method selects and tracks containers to be preempted. If a container
 * is in the target list for more than maxWaitTime it is killed.
 *
 * @param root the root of the CapacityScheduler queue hierarchy
 * @param clusterResources the total amount of resources in the cluster
 */
private void containerBasedPreemptOrKill(CSQueue root,
    Resource clusterResources) {

  // extract a summary of the queues from scheduler
  TempQueue tRoot;
  synchronized (scheduler) {
    tRoot = cloneQueues(root, clusterResources);
  }

  // compute the ideal distribution of resources among queues
  // updates cloned queues state accordingly
  tRoot.idealAssigned = tRoot.guaranteed;
  Resource totalPreemptionAllowed = Resources.multiply(clusterResources,
      percentageClusterPreemptionAllowed);
  List<TempQueue> queues =
    recursivelyComputeIdealAssignment(tRoot, totalPreemptionAllowed);

  // based on ideal allocation select containers to be preempted from each
  // queue and each application
  Map<ApplicationAttemptId,Set<RMContainer>> toPreempt =
      getContainersToPreempt(queues, clusterResources);

  logToCSV(queues);

  // if we are in observeOnly mode return before any action is taken
  if (observeOnly) {
    return;
  }

  // preempt (or kill) the selected containers
  for (Map.Entry<ApplicationAttemptId,Set<RMContainer>> e
       : toPreempt.entrySet()) {
    for (RMContainer container : e.getValue()) {
      // if we tried to preempt this for more than maxWaitTime
      if (preempted.get(container) != null &&
          preempted.get(container) + maxWaitTime < clock.getTime()) {
        // kill it
        dispatcher.handle(new ContainerPreemptEvent(e.getKey(), container,
              ContainerPreemptEventType.KILL_CONTAINER));
        preempted.remove(container);
      } else {
        //otherwise just send preemption events
        dispatcher.handle(new ContainerPreemptEvent(e.getKey(), container,
              ContainerPreemptEventType.PREEMPT_CONTAINER));
        if (preempted.get(container) == null) {
          preempted.put(container, clock.getTime());
        }
      }
    }
  }

  // Keep the preempted list clean
  for (Iterator<RMContainer> i = preempted.keySet().iterator(); i.hasNext();){
    RMContainer id = i.next();
    // garbage collect containers that are irrelevant for preemption
    if (preempted.get(id) + 2 * maxWaitTime < clock.getTime()) {
      i.remove();
    }
  }
}
 
开发者ID:ict-carch,项目名称:hadoop-plus,代码行数:68,代码来源:ProportionalCapacityPreemptionPolicy.java


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