Capacity Scheduler--APP_ADDED事件的处理(详见5)

本文详细介绍了Capacity Scheduler在Hadoop 2.7.6版本中处理APP_ADDED事件的过程,包括应用程序初始化、资源调度的逻辑。在APP_ADDED事件中,Capacity Scheduler会创建SchedulerApplication对象,并进行队列合法性检查,接着触发APP_ACCEPTED事件。主要关注点在于队列对应用程序的限制和资源分配策略。
摘要由CSDN通过智能技术生成
Capacity Scheduler(基于hadoop 2.7.6)

在这里插入图片描述
Capacity Scheduler 主要功能:
1.应用程序初始化
       应用程序提交到ResourceManager后,ResouceManager会向Capacity Scheduler发送一个SchedulerEventType.APP_ADDED事件,Capacity Scheduler收到该事件后,将为应用程序创建一个SchedulerApplication(主要包括queue,user,FiCaSchedulerApp成员)对象跟踪和维护该应用程序的运行时信息,同时将应用程序提交到对应的叶子队列,叶子队列会对应用程序进行一系列合法性检查,等待分配.

2.资源调度
       当ResourceManager收到来自NodeManager发送的心跳信息后,将向Capacity Scheduler发送一个SchedulerEventType.NODE_UPDATE事件,Capacity Scheduler收到该事件后,会依次进行一下操作:
       (1)处理心跳信息

       (2)资源分配


APP_ADDED事件的主要处理逻辑:
    1.创建SchedulerApplication(主要包括queue,user,FiCaSchedulerApp成员)对象跟踪和维护该应用程序的运行时信息,FiCaSchedulerApp在处理APP_ATTEMPT_ADDED事件时实例化.后续的资源调度分配都是基于该FiCaSchedulerApp对象.
    2.触发RMAppEventType.APP_ACCEPTED事件,该事件由StartAppAttemptTransition转换器处理.

下面贴贴APP_ADDED事件处理的代码清单:

@Override
  public void CapacityScheduler.handle(SchedulerEvent event) {
   
  ...省略...
 case APP_ADDED:
    {
   
      AppAddedSchedulerEvent appAddedEvent = (AppAddedSchedulerEvent) event;
      String queueName =
    resolveReservationQueueName(appAddedEvent.getQueue(),
              appAddedEvent.getApplicationId(),
              appAddedEvent.getReservationID());
      if (queueName != null) {
   
        if (!appAddedEvent.getIsAppRecovering()) {
   
      addApplication(appAddedEvent.getApplicationId(), queueName,appAddedEv
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值