Browse Source

YARN-2080. Integrating reservation system with ResourceManager and client-RM protocol. Contributed by Subru Krishnan and Carlo Curino.

subru 10 years ago
parent
commit
eb4291be15

+ 4 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/RMContext.java

@@ -28,6 +28,7 @@ import org.apache.hadoop.yarn.event.Dispatcher;
 import org.apache.hadoop.yarn.server.resourcemanager.ahs.RMApplicationHistoryWriter;
 import org.apache.hadoop.yarn.server.resourcemanager.ahs.RMApplicationHistoryWriter;
 import org.apache.hadoop.yarn.server.resourcemanager.metrics.SystemMetricsPublisher;
 import org.apache.hadoop.yarn.server.resourcemanager.metrics.SystemMetricsPublisher;
 import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore;
 import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore;
+import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationSystem;
 import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp;
 import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp;
 import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.AMLivelinessMonitor;
 import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.AMLivelinessMonitor;
 import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.ContainerAllocationExpirer;
 import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.ContainerAllocationExpirer;
@@ -112,4 +113,7 @@ public interface RMContext {
   ReservationSystem getReservationSystem();
   ReservationSystem getReservationSystem();
 
 
   boolean isSchedulerReadyForAllocatingContainers();
   boolean isSchedulerReadyForAllocatingContainers();
+
+  ReservationSystem getReservationSystem();
+
 }
 }

+ 6 - 3
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/rmapp/RMAppImpl.java

@@ -847,14 +847,16 @@ public class RMAppImpl implements RMApp, Recoverable {
       // started or started but not yet saved.
       // started or started but not yet saved.
       if (app.attempts.isEmpty()) {
       if (app.attempts.isEmpty()) {
         app.scheduler.handle(new AppAddedSchedulerEvent(app.applicationId,
         app.scheduler.handle(new AppAddedSchedulerEvent(app.applicationId,
-          app.submissionContext.getQueue(), app.user));
+            app.submissionContext.getQueue(), app.user, app.submissionContext
+                .getReservationID()));
         return RMAppState.SUBMITTED;
         return RMAppState.SUBMITTED;
       }
       }
 
 
       // Add application to scheduler synchronously to guarantee scheduler
       // Add application to scheduler synchronously to guarantee scheduler
       // knows applications before AM or NM re-registers.
       // knows applications before AM or NM re-registers.
       app.scheduler.handle(new AppAddedSchedulerEvent(app.applicationId,
       app.scheduler.handle(new AppAddedSchedulerEvent(app.applicationId,
-        app.submissionContext.getQueue(), app.user, true));
+          app.submissionContext.getQueue(), app.user, true,
+          app.submissionContext.getReservationID()));
 
 
       // recover attempts
       // recover attempts
       app.recoverAppAttempts();
       app.recoverAppAttempts();
@@ -881,7 +883,8 @@ public class RMAppImpl implements RMApp, Recoverable {
     @Override
     @Override
     public void transition(RMAppImpl app, RMAppEvent event) {
     public void transition(RMAppImpl app, RMAppEvent event) {
       app.handler.handle(new AppAddedSchedulerEvent(app.applicationId,
       app.handler.handle(new AppAddedSchedulerEvent(app.applicationId,
-        app.submissionContext.getQueue(), app.user));
+          app.submissionContext.getQueue(), app.user, app.submissionContext
+              .getReservationID()));
     }
     }
   }
   }