You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by ac...@apache.org on 2011/04/01 00:23:34 UTC

svn commit: r1087462 [9/20] - in /hadoop/mapreduce/branches/MR-279: ./ mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapred/ mr-client/hadoop-mapreduce-client-app/src/main/java/org/apache/hadoop/mapreduce/jobhistory/ mr-client/h...

Modified: hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java?rev=1087462&r1=1087461&r2=1087462&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java (original)
+++ hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java Thu Mar 31 22:23:22 2011
@@ -21,7 +21,6 @@ package org.apache.hadoop.mapred;
 import java.io.IOException;
 import java.net.InetSocketAddress;
 
-import org.apache.avro.ipc.AvroRemoteException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
@@ -42,16 +41,26 @@ import org.apache.hadoop.mapreduce.secur
 import org.apache.hadoop.net.NetUtils;
 import org.apache.hadoop.security.SecurityInfo;
 import org.apache.hadoop.security.token.Token;
+import org.apache.hadoop.yarn.api.ClientRMProtocol;
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationMasterRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationMasterResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationIdRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationRequest;
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.api.records.ApplicationMaster;
+import org.apache.hadoop.yarn.api.records.ApplicationState;
+import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
+import org.apache.hadoop.yarn.api.records.YarnClusterMetrics;
 import org.apache.hadoop.yarn.conf.YARNApplicationConstants;
 import org.apache.hadoop.yarn.conf.YarnConfiguration;
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+import org.apache.hadoop.yarn.factories.RecordFactory;
+import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
 import org.apache.hadoop.yarn.ipc.YarnRPC;
 import org.apache.hadoop.yarn.security.client.ClientRMSecurityInfo;
-import org.apache.hadoop.yarn.ApplicationID;
-import org.apache.hadoop.yarn.ApplicationMaster;
-import org.apache.hadoop.yarn.ApplicationState;
-import org.apache.hadoop.yarn.ApplicationSubmissionContext;
-import org.apache.hadoop.yarn.ClientRMProtocol;
-import org.apache.hadoop.yarn.YarnClusterMetrics;
+
 
 // TODO: This should be part of something like yarn-client.
 public class ResourceMgrDelegate {
@@ -59,7 +68,8 @@ public class ResourceMgrDelegate {
       
   private Configuration conf;
   ClientRMProtocol applicationsManager;
-  private ApplicationID applicationId;
+  private ApplicationId applicationId;
+  private final RecordFactory recordFactory = RecordFactoryProvider.getRecordFactory(null);
 
   public ResourceMgrDelegate(Configuration conf) throws UnsupportedFileSystemException {
     this.conf = conf;
@@ -110,10 +120,12 @@ public class ResourceMgrDelegate {
 
   public ClusterMetrics getClusterMetrics() throws IOException,
       InterruptedException {
-    YarnClusterMetrics metrics = applicationsManager.getClusterMetrics();
+    GetClusterMetricsRequest request = recordFactory.newRecordInstance(GetClusterMetricsRequest.class);
+    GetClusterMetricsResponse response = applicationsManager.getClusterMetrics(request);
+    YarnClusterMetrics metrics = response.getClusterMetrics();
     ClusterMetrics oldMetrics = new ClusterMetrics(1, 1, 1, 1, 1, 1, 
-        metrics.numNodeManagers * 10, metrics.numNodeManagers * 2, 1,
-        metrics.numNodeManagers, 0, 0);
+        metrics.getNumNodeManagers() * 10, metrics.getNumNodeManagers() * 2, 1,
+        metrics.getNumNodeManagers(), 0, 0);
     return oldMetrics;
   }
 
@@ -129,7 +141,8 @@ public class ResourceMgrDelegate {
   }
 
   public JobID getNewJobID() throws IOException, InterruptedException {
-    applicationId = applicationsManager.getNewApplicationId();
+    GetNewApplicationIdRequest request = recordFactory.newRecordInstance(GetNewApplicationIdRequest.class);
+    applicationId = applicationsManager.getNewApplicationId(request).getApplicationId();
     return TypeConverter.fromYarn(applicationId);
   }
 
@@ -193,23 +206,27 @@ public class ResourceMgrDelegate {
   }
   
   
-  public ApplicationID submitApplication(ApplicationSubmissionContext appContext) 
+  public ApplicationId submitApplication(ApplicationSubmissionContext appContext) 
   throws IOException {
-    appContext.applicationId = applicationId;
-    applicationsManager.submitApplication(appContext);
+    appContext.setApplicationId(applicationId);
+    SubmitApplicationRequest request = recordFactory.newRecordInstance(SubmitApplicationRequest.class);
+    request.setApplicationSubmissionContext(appContext);
+    applicationsManager.submitApplication(request);
     LOG.info("Submitted application " + applicationId + " to ResourceManager");
     return applicationId;
   }
 
-  public ApplicationMaster getApplicationMaster(ApplicationID appId) 
-    throws AvroRemoteException {
-    ApplicationMaster appMaster = 
-      applicationsManager.getApplicationMaster(appId);
-    while (appMaster.state != ApplicationState.RUNNING &&
-        appMaster.state != ApplicationState.KILLED && 
-        appMaster.state != ApplicationState.FAILED && 
-        appMaster.state != ApplicationState.COMPLETED) {
-      appMaster = applicationsManager.getApplicationMaster(appId);
+  public ApplicationMaster getApplicationMaster(ApplicationId appId) 
+    throws YarnRemoteException {
+    GetApplicationMasterRequest request = recordFactory.newRecordInstance(GetApplicationMasterRequest.class);
+    request.setApplicationId(appId);
+    GetApplicationMasterResponse response = applicationsManager.getApplicationMaster(request);
+    ApplicationMaster appMaster = response.getApplicationMaster(); 
+    while (appMaster.getState() != ApplicationState.RUNNING &&
+        appMaster.getState() != ApplicationState.KILLED && 
+        appMaster.getState() != ApplicationState.FAILED && 
+        appMaster.getState() != ApplicationState.COMPLETED) {
+      appMaster = applicationsManager.getApplicationMaster(request).getApplicationMaster();
       try {
         LOG.info("Waiting for appMaster to start..");
         Thread.sleep(2000);
@@ -220,7 +237,7 @@ public class ResourceMgrDelegate {
     return appMaster;
   }
 
-  public ApplicationID getApplicationId() {
+  public ApplicationId getApplicationId() {
     return applicationId;
   }
 }

Modified: hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/YARNRunner.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/YARNRunner.java?rev=1087462&r1=1087461&r2=1087462&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/YARNRunner.java (original)
+++ hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/YARNRunner.java Thu Mar 31 22:23:22 2011
@@ -27,7 +27,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Vector;
 
-import org.apache.avro.ipc.AvroRemoteException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
@@ -62,18 +61,23 @@ import org.apache.hadoop.security.author
 import org.apache.hadoop.security.token.Token;
 import org.apache.hadoop.security.token.TokenIdentifier;
 import org.apache.hadoop.yarn.YarnException;
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.api.records.ApplicationMaster;
+import org.apache.hadoop.yarn.api.records.ApplicationState;
+import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
+import org.apache.hadoop.yarn.api.records.LocalResource;
+import org.apache.hadoop.yarn.api.records.LocalResourceType;
+import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
+import org.apache.hadoop.yarn.api.records.Resource;
+import org.apache.hadoop.yarn.api.records.URL;
 import org.apache.hadoop.yarn.conf.YARNApplicationConstants;
 import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.hadoop.yarn.util.AvroUtil;
-import org.apache.hadoop.yarn.ApplicationID;
-import org.apache.hadoop.yarn.ApplicationMaster;
-import org.apache.hadoop.yarn.ApplicationState;
-import org.apache.hadoop.yarn.ApplicationSubmissionContext;
-import org.apache.hadoop.yarn.LocalResource;
-import org.apache.hadoop.yarn.LocalResourceType;
-import org.apache.hadoop.yarn.LocalResourceVisibility;
-import org.apache.hadoop.yarn.Resource;
-import org.apache.hadoop.yarn.URL;
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+import org.apache.hadoop.yarn.factories.RecordFactory;
+import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
+import org.apache.hadoop.yarn.ipc.RPCUtil;
+import org.apache.hadoop.yarn.util.ConverterUtils;
+
 
 /**
  * This class enables the current JobClient (0.22 hadoop) to run on YARN.
@@ -85,6 +89,7 @@ public class YARNRunner implements Clien
   public static final String YARN_AM_RESOURCE_KEY = "yarn.am.mapreduce.resource.mb";
   private static final int DEFAULT_YARN_AM_RESOURCE = 1024;
   
+  private final RecordFactory recordFactory = RecordFactoryProvider.getRecordFactory(null);
   private ResourceMgrDelegate resMgrDelegate;
   private ClientServiceDelegate clientServiceDelegate;
   private YarnConfiguration conf;
@@ -95,7 +100,7 @@ public class YARNRunner implements Clien
    * @param conf the configuration object for the client
    */
   public YARNRunner(Configuration conf)
-      throws AvroRemoteException {
+      throws YarnRemoteException {
     this.conf = new YarnConfiguration(conf);
     try {
       this.resMgrDelegate = new ResourceMgrDelegate(conf);
@@ -227,90 +232,86 @@ public class YARNRunner implements Clien
     // ---
     
     // Submit to ResourceManager
-    ApplicationID applicationId = resMgrDelegate.submitApplication(appContext);
+    ApplicationId applicationId = resMgrDelegate.submitApplication(appContext);
     
     ApplicationMaster appMaster = 
       resMgrDelegate.getApplicationMaster(applicationId);
-    if (appMaster.state == ApplicationState.FAILED || appMaster.state ==
+    if (appMaster.getState() == ApplicationState.FAILED || appMaster.getState() ==
       ApplicationState.KILLED) {
-      throw new AvroRemoteException("failed to run job");
+      throw RPCUtil.getRemoteException("failed to run job");
     }
     return clientServiceDelegate.getJobStatus(jobId);
   }
 
   private LocalResource createApplicationResource(FileContext fs, Path p)
       throws IOException {
-    LocalResource rsrc = new LocalResource();
+    LocalResource rsrc = recordFactory.newRecordInstance(LocalResource.class);
     FileStatus rsrcStat = fs.getFileStatus(p);
-    rsrc.resource = AvroUtil.getYarnUrlFromPath(rsrcStat.getPath());
-    rsrc.size = rsrcStat.getLen();
-    rsrc.timestamp = rsrcStat.getModificationTime();
-    rsrc.type = LocalResourceType.FILE;
-    rsrc.state = LocalResourceVisibility.APPLICATION;
+    rsrc.setResource(ConverterUtils.getYarnUrlFromPath(rsrcStat.getPath()));
+    rsrc.setSize(rsrcStat.getLen());
+    rsrc.setTimestamp(rsrcStat.getModificationTime());
+    rsrc.setType(LocalResourceType.FILE);
+    rsrc.setVisibility(LocalResourceVisibility.APPLICATION);
     return rsrc;
   }
 
   private ApplicationSubmissionContext getApplicationSubmissionContext(
       Configuration jobConf,
       String jobSubmitDir, Credentials ts) throws IOException {
-    ApplicationSubmissionContext appContext =
-        new ApplicationSubmissionContext();
-    ApplicationID applicationId = resMgrDelegate.getApplicationId();
-    appContext.applicationId = applicationId;
-    Resource capability = new Resource();
-    capability.memory =
-        conf.getInt(YARN_AM_RESOURCE_KEY, DEFAULT_YARN_AM_RESOURCE);
+    ApplicationSubmissionContext appContext = recordFactory.newRecordInstance(ApplicationSubmissionContext.class);
+    ApplicationId applicationId = resMgrDelegate.getApplicationId();
+    appContext.setApplicationId(applicationId);
+    Resource capability = recordFactory.newRecordInstance(Resource.class);
+    capability.setMemory(conf.getInt(YARN_AM_RESOURCE_KEY, DEFAULT_YARN_AM_RESOURCE));
     LOG.info("Master capability = " + capability);
-    appContext.masterCapability = capability;
+    appContext.setMasterCapability(capability);
 
     FileContext defaultFS = FileContext.getFileContext(conf);
     Path jobConfPath = new Path(jobSubmitDir, YARNApplicationConstants.JOB_CONF_FILE);
     
     URL yarnUrlForJobSubmitDir =
-        AvroUtil.getYarnUrlFromPath(defaultFS.makeQualified(new Path(
+        ConverterUtils.getYarnUrlFromPath(defaultFS.makeQualified(new Path(
             jobSubmitDir)));
-    appContext.resources = new HashMap<CharSequence, URL>();
+//    appContext.resources = new HashMap<CharSequence, URL>();
     LOG.debug("Creating setup context, jobSubmitDir url is "
         + yarnUrlForJobSubmitDir);
 
-    appContext.resources.put(YARNApplicationConstants.JOB_SUBMIT_DIR,
+    appContext.setResource(YARNApplicationConstants.JOB_SUBMIT_DIR,
         yarnUrlForJobSubmitDir);
 
-    appContext.resources_todo = new HashMap<CharSequence,LocalResource>();
-    appContext.resources_todo.put(YARNApplicationConstants.JOB_CONF_FILE,
-          createApplicationResource(defaultFS,
-          jobConfPath));
-    appContext.resources_todo.put(YARNApplicationConstants.JOB_JAR,
+//    appContext.resources_todo = new HashMap<CharSequence,LocalResource>();
+    appContext.setResourceTodo(YARNApplicationConstants.JOB_CONF_FILE,
+        createApplicationResource(defaultFS,
+            jobConfPath));
+    appContext.setResourceTodo(YARNApplicationConstants.JOB_JAR,
           createApplicationResource(defaultFS,
             new Path(jobSubmitDir, YARNApplicationConstants.JOB_JAR)));
+    
     // TODO gross hack
     for (String s : new String[] { "job.split", "job.splitmetainfo",
         YarnConfiguration.APPLICATION_TOKENS_FILE }) {
-      appContext.resources_todo.put(
-          YARNApplicationConstants.JOB_SUBMIT_DIR + "/" + s,
+      appContext.setResourceTodo(YARNApplicationConstants.JOB_SUBMIT_DIR + "/" + s,
           createApplicationResource(defaultFS,
-            new Path(jobSubmitDir, s)));
+              new Path(jobSubmitDir, s)));
     }
 
     // TODO: Only if security is on.
-    List<CharSequence> fsTokens = new ArrayList<CharSequence>();
+    List<String> fsTokens = new ArrayList<String>();
     for (Token<? extends TokenIdentifier> token : ts.getAllTokens()) {
       fsTokens.add(token.encodeToUrlString());
     }
     
     // TODO - Remove this!
-    appContext.fsTokens = fsTokens;
+    appContext.addAllFsTokens(fsTokens);
     DataOutputBuffer dob = new DataOutputBuffer();
     ts.writeTokenStorageToStream(dob);
-    appContext.fsTokens_todo =
-      ByteBuffer.wrap(dob.getData(), 0, dob.getLength());
+    appContext.setFsTokensTodo(ByteBuffer.wrap(dob.getData(), 0, dob.getLength()));
 
     // Add queue information
-    appContext.queue = 
-      jobConf.get(JobContext.QUEUE_NAME, JobConf.DEFAULT_QUEUE_NAME);
+    appContext.setQueue(jobConf.get(JobContext.QUEUE_NAME, JobConf.DEFAULT_QUEUE_NAME));
     
     // Add job name
-    appContext.applicationName = jobConf.get(JobContext.JOB_NAME, "N/A");
+    appContext.setApplicationName(jobConf.get(JobContext.JOB_NAME, "N/A"));
     
     // Add the command line
     String javaHome = "$JAVA_HOME";
@@ -320,19 +321,21 @@ public class YARNRunner implements Clien
         "-Dhadoop.root.logger=DEBUG,console -Xmx1024m"));
 
     // Add { job jar, MR app jar } to classpath.
-    appContext.environment = new HashMap<CharSequence, CharSequence>();
-    MRApps.setInitialClasspath(appContext.environment);
-    MRApps.addToClassPath(appContext.environment,
+    Map<String, String> environment = new HashMap<String, String>();
+//    appContext.environment = new HashMap<CharSequence, CharSequence>();
+    MRApps.setInitialClasspath(environment);
+    MRApps.addToClassPath(environment,
         YARNApplicationConstants.JOB_JAR);
-    MRApps.addToClassPath(appContext.environment,
+    MRApps.addToClassPath(environment,
         YARNApplicationConstants.YARN_MAPREDUCE_APP_JAR_PATH);
+    appContext.addAllEnvironment(environment);
     vargs.add("org.apache.hadoop.mapreduce.v2.app.MRAppMaster");
-    vargs.add(String.valueOf(applicationId.clusterTimeStamp));
-    vargs.add(String.valueOf(applicationId.id));
+    vargs.add(String.valueOf(applicationId.getClusterTimestamp()));
+    vargs.add(String.valueOf(applicationId.getId()));
     vargs.add("1>logs/stderr");
     vargs.add("2>logs/stdout");
 
-    Vector<CharSequence> vargsFinal = new Vector<CharSequence>(8);
+    Vector<String> vargsFinal = new Vector<String>(8);
     // Final commmand
     StringBuilder mergedCommand = new StringBuilder();
     for (CharSequence str : vargs) {
@@ -343,9 +346,9 @@ public class YARNRunner implements Clien
     LOG.info("Command to launch container for ApplicationMaster is : "
         + mergedCommand);
 
-    appContext.command = vargsFinal;
+    appContext.addAllCommands(vargsFinal);
     // TODO: RM should get this from RPC.
-    appContext.user = UserGroupInformation.getCurrentUser().getShortUserName();
+    appContext.setUser(UserGroupInformation.getCurrentUser().getShortUserName());
     return appContext;
   }
   
@@ -407,7 +410,7 @@ public class YARNRunner implements Clien
         if (name.isAbsolute()) {
           throw new IllegalArgumentException("Resource name must be relative");
         }
-        container.resources_todo.put(
+        container.setResourceTodo(
             name.toUri().getPath(),
             getLocalResource(
                 uris[i], type, 
@@ -417,7 +420,9 @@ public class YARNRunner implements Clien
                 sizes[i], timestamps[i])
         );
         if (classPaths.containsKey(u.getPath())) {
-          MRApps.addToClassPath(container.environment, name.toUri().getPath());
+          Map<String, String> environment = container.getAllEnvironment();
+          MRApps.addToClassPath(environment, name.toUri().getPath());
+          container.addAllEnvironment(environment);
         }
       }
     }
@@ -439,12 +444,12 @@ public class YARNRunner implements Clien
   private static LocalResource getLocalResource(URI uri, 
       LocalResourceType type, LocalResourceVisibility visibility, 
       long size, long timestamp) {
-    LocalResource resource = new LocalResource();
-    resource.resource = AvroUtil.getYarnUrlFromURI(uri);
-    resource.type = type;
-    resource.state = visibility;
-    resource.size = size;
-    resource.timestamp = timestamp;
+    LocalResource resource = RecordFactoryProvider.getRecordFactory(null).newRecordInstance(LocalResource.class);
+    resource.setResource(ConverterUtils.getYarnUrlFromURI(uri));
+    resource.setType(type);
+    resource.setVisibility(visibility);
+    resource.setSize(size);
+    resource.setTimestamp(timestamp);
     return resource;
   }
   

Modified: hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestClientRedirect.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestClientRedirect.java?rev=1087462&r1=1087461&r2=1087462&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestClientRedirect.java (original)
+++ hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapred/TestClientRedirect.java Thu Mar 31 22:23:22 2011
@@ -18,58 +18,85 @@
 
 package org.apache.hadoop.mapred;
 
-import java.io.IOException;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.UnknownHostException;
-import java.util.HashMap;
-import java.util.List;
 
 import junit.framework.Assert;
 
-import org.apache.avro.ipc.AvroRemoteException;
 import org.apache.avro.ipc.Server;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.mapred.YARNRunner;
+import org.apache.hadoop.mapreduce.v2.YarnMRJobConfig;
+import org.apache.hadoop.mapreduce.v2.api.MRClientProtocol;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.FailTaskAttemptRequest;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.FailTaskAttemptResponse;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetCountersRequest;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetCountersResponse;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetDiagnosticsRequest;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetDiagnosticsResponse;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetJobReportRequest;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetJobReportResponse;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetTaskAttemptCompletionEventsRequest;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetTaskAttemptCompletionEventsResponse;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetTaskAttemptReportRequest;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetTaskAttemptReportResponse;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetTaskReportRequest;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetTaskReportResponse;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetTaskReportsRequest;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.GetTaskReportsResponse;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.KillJobRequest;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.KillJobResponse;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.KillTaskAttemptRequest;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.KillTaskAttemptResponse;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.KillTaskRequest;
+import org.apache.hadoop.mapreduce.v2.api.protocolrecords.KillTaskResponse;
+import org.apache.hadoop.mapreduce.v2.api.records.Counters;
+import org.apache.hadoop.mapreduce.v2.api.records.JobId;
+import org.apache.hadoop.mapreduce.v2.api.records.TaskAttemptId;
+import org.apache.hadoop.mapreduce.v2.api.records.TaskId;
+import org.apache.hadoop.mapreduce.v2.api.records.TaskType;
 import org.apache.hadoop.net.NetUtils;
 import org.apache.hadoop.yarn.YarnException;
+import org.apache.hadoop.yarn.api.ClientRMProtocol;
+import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationMasterRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationMasterResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationIdRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationIdResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationResponse;
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.api.records.ApplicationMaster;
+import org.apache.hadoop.yarn.api.records.ApplicationState;
+import org.apache.hadoop.yarn.api.records.ApplicationStatus;
 import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.hadoop.yarn.ipc.RPCUtil;
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+import org.apache.hadoop.yarn.factories.RecordFactory;
+import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
+import org.apache.hadoop.yarn.factory.providers.YarnRemoteExceptionFactoryProvider;
 import org.apache.hadoop.yarn.ipc.YarnRPC;
 import org.apache.hadoop.yarn.server.resourcemanager.applicationsmanager.ApplicationsManager;
 import org.apache.hadoop.yarn.service.AbstractService;
-import org.apache.hadoop.yarn.ApplicationID;
-import org.apache.hadoop.yarn.ApplicationMaster;
-import org.apache.hadoop.yarn.ApplicationState;
-import org.apache.hadoop.yarn.ApplicationStatus;
-import org.apache.hadoop.yarn.ApplicationSubmissionContext;
-import org.apache.hadoop.yarn.ClientRMProtocol;
-import org.apache.hadoop.yarn.YarnClusterMetrics;
-import org.apache.hadoop.yarn.YarnRemoteException;
-import org.apache.hadoop.mapreduce.v2.api.CounterGroup;
-import org.apache.hadoop.mapreduce.v2.api.Counters;
-import org.apache.hadoop.mapreduce.v2.api.JobID;
-import org.apache.hadoop.mapreduce.v2.api.JobReport;
-import org.apache.hadoop.mapreduce.v2.api.MRClientProtocol;
-import org.apache.hadoop.mapreduce.v2.api.TaskAttemptCompletionEvent;
-import org.apache.hadoop.mapreduce.v2.api.TaskAttemptReport;
-import org.apache.hadoop.mapreduce.v2.api.TaskReport;
-import org.apache.hadoop.mapreduce.v2.YarnMRJobConfig;
 import org.junit.Test;
 
 public class TestClientRedirect {
 
   private static final Log LOG = LogFactory.getLog(TestClientRedirect.class);
   private static final String RMADDRESS = "0.0.0.0:8054";
+  private static final RecordFactory recordFactory = RecordFactoryProvider.getRecordFactory(null);
+  
   private static final String AMHOSTADDRESS = "0.0.0.0:10020";
   private static final String HSHOSTADDRESS = "0.0.0.0:10021";
   private static final int HSPORT = 10020;
   private volatile boolean amContact = false; 
   private volatile boolean hsContact = false;
   private volatile boolean amRunning = false;
- 
+
   @Test
   public void testRedirect() throws Exception {
     
@@ -143,42 +170,42 @@ public class TestClientRedirect {
     }
 
     @Override
-    public ApplicationID getNewApplicationId() throws AvroRemoteException {
+    public GetNewApplicationIdResponse getNewApplicationId(GetNewApplicationIdRequest request) throws YarnRemoteException {
       return null;
     }
-
+    
     @Override
-    public ApplicationMaster getApplicationMaster(ApplicationID applicationId)
-        throws AvroRemoteException {
-      ApplicationMaster master = new ApplicationMaster();
-      master.applicationId = applicationId;
-      master.status = new ApplicationStatus();
-      master.status.applicationId = applicationId;
+    public GetApplicationMasterResponse getApplicationMaster(GetApplicationMasterRequest request) throws YarnRemoteException {
+      ApplicationId applicationId = request.getApplicationId();
+      ApplicationMaster master = recordFactory.newRecordInstance(ApplicationMaster.class);
+      master.setApplicationId(applicationId);
+      master.setStatus(recordFactory.newRecordInstance(ApplicationStatus.class));
+      master.getStatus().setApplicationId(applicationId);
       if (amRunning) {
-        master.state = ApplicationState.RUNNING;
+        master.setState(ApplicationState.RUNNING);
       } else {
-        master.state = ApplicationState.COMPLETED;
+        master.setState(ApplicationState.COMPLETED);
       }
       String[] split = AMHOSTADDRESS.split(":");
-      master.host = split[0];
-      master.rpcPort = Integer.parseInt(split[1]);
-      return master;
-  }
+      master.setHost(split[0]);
+      master.setRpcPort(Integer.parseInt(split[1]));
+      GetApplicationMasterResponse response = recordFactory.newRecordInstance(GetApplicationMasterResponse.class);
+      response.setApplicationMaster(master);
+      return response;
+    }
 
     @Override
-    public Void submitApplication(ApplicationSubmissionContext context)
-        throws AvroRemoteException {
-      throw new AvroRemoteException("Test");
+    public SubmitApplicationResponse submitApplication(SubmitApplicationRequest request) throws YarnRemoteException {
+      throw YarnRemoteExceptionFactoryProvider.getYarnRemoteExceptionFactory(null).createYarnRemoteException("Test");
     }
-
+    
     @Override
-    public Void finishApplication(ApplicationID applicationId)
-        throws AvroRemoteException {
+    public FinishApplicationResponse finishApplication(FinishApplicationRequest request) throws YarnRemoteException {
       return null;
     }
-
+    
     @Override
-    public YarnClusterMetrics getClusterMetrics() throws AvroRemoteException {
+    public GetClusterMetricsResponse getClusterMetrics(GetClusterMetricsRequest request) throws YarnRemoteException {
       return null;
     }
   }
@@ -189,12 +216,14 @@ public class TestClientRedirect {
     }
 
     @Override
-    public Counters getCounters(JobID jobID) throws AvroRemoteException,
-      YarnRemoteException {
+    public GetCountersResponse getCounters(GetCountersRequest request) throws YarnRemoteException {
+      JobId jobId = request.getJobId();
       hsContact = true;
-      Counters counters = new Counters();
-      counters.groups = new HashMap<CharSequence, CounterGroup>();
-      return counters;
+      Counters counters = recordFactory.newRecordInstance(Counters.class);
+//      counters.groups = new HashMap<CharSequence, CounterGroup>();
+      GetCountersResponse response = recordFactory.newRecordInstance(GetCountersResponse.class);
+      response.setCounters(counters);
+      return response;
    }
   }
 
@@ -240,77 +269,78 @@ public class TestClientRedirect {
     }
 
     @Override
-    public Counters getCounters(JobID jobID) throws AvroRemoteException,
-      YarnRemoteException {
+    public GetCountersResponse getCounters(GetCountersRequest request) throws YarnRemoteException {
+      JobId jobID = request.getJobId();
+    
       amContact = true;
-      Counters counters = new Counters();
-      counters.groups = new HashMap<CharSequence, CounterGroup>();
-      return counters;
-   }
+      Counters counters = recordFactory.newRecordInstance(Counters.class);
+//      counters.groups = new HashMap<CharSequence, CounterGroup>();
+        GetCountersResponse response = recordFactory.newRecordInstance(GetCountersResponse.class);
+        response.setCounters(counters);
+        return response;
+      }
 
     @Override
-    public List<CharSequence> getDiagnostics(
-        org.apache.hadoop.mapreduce.v2.api.TaskAttemptID taskAttemptID)
-        throws AvroRemoteException, YarnRemoteException {
+    public GetJobReportResponse getJobReport(GetJobReportRequest request) throws YarnRemoteException {
+      JobId jobId = request.getJobId();
       return null;
     }
 
     @Override
-    public JobReport getJobReport(JobID jobID) throws AvroRemoteException,
-        YarnRemoteException {
+    public GetTaskReportResponse getTaskReport(GetTaskReportRequest request) throws YarnRemoteException {
+      TaskId taskID = request.getTaskId();
       return null;
     }
 
+
     @Override
-    public List<TaskAttemptCompletionEvent> getTaskAttemptCompletionEvents(
-        JobID jobID, int fromEventId, int maxEvents)
-        throws AvroRemoteException, YarnRemoteException {
+    public GetTaskAttemptReportResponse getTaskAttemptReport(GetTaskAttemptReportRequest request) throws YarnRemoteException {
+      TaskAttemptId taskAttemptID = request.getTaskAttemptId();
       return null;
     }
 
     @Override
-    public TaskAttemptReport getTaskAttemptReport(
-        org.apache.hadoop.mapreduce.v2.api.TaskAttemptID taskAttemptID)
-        throws AvroRemoteException, YarnRemoteException {
+    public GetTaskAttemptCompletionEventsResponse getTaskAttemptCompletionEvents(GetTaskAttemptCompletionEventsRequest request) throws YarnRemoteException {
+      JobId jobId = request.getJobId();
+      int fromEventId = request.getFromEventId();
+      int maxEvents = request.getMaxEvents();
       return null;
     }
 
     @Override
-    public TaskReport getTaskReport(org.apache.hadoop.mapreduce.v2.api.TaskID taskID)
-        throws AvroRemoteException, YarnRemoteException {
+    public GetTaskReportsResponse getTaskReports(GetTaskReportsRequest request) throws YarnRemoteException {
+      JobId jobID = request.getJobId();
+      TaskType taskType = request.getTaskType();
       return null;
     }
 
     @Override
-    public List<TaskReport> getTaskReports(JobID jobID,
-        org.apache.hadoop.mapreduce.v2.api.TaskType taskType)
-        throws AvroRemoteException, YarnRemoteException {
+    public GetDiagnosticsResponse getDiagnostics(GetDiagnosticsRequest request) throws YarnRemoteException {
+      TaskAttemptId taskAttemptID = request.getTaskAttemptId();
       return null;
     }
 
     @Override
-    public Void killJob(JobID jobID) throws AvroRemoteException,
-        YarnRemoteException {
+    public KillJobResponse killJob(KillJobRequest request) throws YarnRemoteException {
+      JobId jobID = request.getJobId();
       return null;
     }
 
     @Override
-    public Void killTask(org.apache.hadoop.mapreduce.v2.api.TaskID taskID)
-        throws AvroRemoteException, YarnRemoteException {
+    public KillTaskResponse killTask(KillTaskRequest request) throws YarnRemoteException {
+      TaskId taskID = request.getTaskId();
       return null;
     }
 
     @Override
-    public Void killTaskAttempt(
-        org.apache.hadoop.mapreduce.v2.api.TaskAttemptID taskAttemptID)
-        throws AvroRemoteException, YarnRemoteException {
+    public KillTaskAttemptResponse killTaskAttempt(KillTaskAttemptRequest request) throws YarnRemoteException {
+      TaskAttemptId taskAttemptID = request.getTaskAttemptId();
       return null;
     }
 
     @Override
-    public Void failTaskAttempt(
-        org.apache.hadoop.mapreduce.v2.api.TaskAttemptID taskAttemptID)
-        throws AvroRemoteException, YarnRemoteException {
+    public FailTaskAttemptResponse failTaskAttempt(FailTaskAttemptRequest request) throws YarnRemoteException {
+      TaskAttemptId taskAttemptID = request.getTaskAttemptId();
       return null;
     }
   }

Modified: hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/v2/TestMRJobsWithHistoryService.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/v2/TestMRJobsWithHistoryService.java?rev=1087462&r1=1087461&r2=1087462&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/v2/TestMRJobsWithHistoryService.java (original)
+++ hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-jobclient/src/test/java/org/apache/hadoop/mapreduce/v2/TestMRJobsWithHistoryService.java Thu Mar 31 22:23:22 2011
@@ -20,45 +20,20 @@ package org.apache.hadoop.mapreduce.v2;
 
 import java.io.File;
 import java.io.IOException;
-import java.security.PrivilegedExceptionAction;
-import org.apache.avro.ipc.AvroRemoteException;
 
 import junit.framework.Assert;
 
+import org.apache.avro.ipc.AvroRemoteException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.FailingMapper;
-import org.apache.hadoop.RandomTextWriterJob;
 import org.apache.hadoop.SleepJob;
-import org.apache.hadoop.RandomTextWriterJob.RandomInputFormat;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapred.YARNRunner;
 import org.apache.hadoop.mapreduce.Counters;
 import org.apache.hadoop.mapreduce.Job;
-import org.apache.hadoop.mapreduce.JobStatus;
-import org.apache.hadoop.mapreduce.MRJobConfig;
-import org.apache.hadoop.mapreduce.TaskAttemptID;
-import org.apache.hadoop.mapreduce.TaskCompletionEvent;
-import org.apache.hadoop.mapreduce.TaskID;
-import org.apache.hadoop.mapreduce.TaskType;
 import org.apache.hadoop.mapreduce.TypeConverter;
-import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
-import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
-import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.hadoop.security.token.Token;
-import org.apache.hadoop.security.token.TokenIdentifier;
-import org.apache.hadoop.yarn.ApplicationID;
-import org.apache.hadoop.yarn.ApplicationState;
-import org.apache.hadoop.yarn.conf.YARNApplicationConstants;
-import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.hadoop.yarn.server.YarnServerConfig;
-import org.apache.hadoop.yarn.server.nodemanager.NMConfig;
-import org.apache.hadoop.yarn.server.resourcemanager.RMConfig;
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.api.records.ApplicationState;
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 public class TestMRJobsWithHistoryService {
@@ -98,7 +73,7 @@ public class TestMRJobsWithHistoryServic
     job.setJar(new File(MiniMRYarnCluster.APPJAR).getAbsolutePath());
     job.waitForCompletion(true);
     Counters counterMR = job.getCounters();
-    ApplicationID appID = TypeConverter.toYarn(job.getJobID()).appID;
+    ApplicationId appID = TypeConverter.toYarn(job.getJobID()).getAppId();
     while (true) {
       Thread.sleep(1000);
       if (mrCluster.getResourceManager().getApplicationsManager()

Modified: hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-shuffle/src/main/java/org/apache/hadoop/mapred/ShuffleHandler.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-shuffle/src/main/java/org/apache/hadoop/mapred/ShuffleHandler.java?rev=1087462&r1=1087461&r2=1087462&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-shuffle/src/main/java/org/apache/hadoop/mapred/ShuffleHandler.java (original)
+++ hadoop/mapreduce/branches/MR-279/mr-client/hadoop-mapreduce-client-shuffle/src/main/java/org/apache/hadoop/mapred/ShuffleHandler.java Thu Mar 31 22:23:22 2011
@@ -86,20 +86,20 @@ import org.apache.hadoop.io.DataOutputBy
 import org.apache.hadoop.mapreduce.security.SecureShuffleUtils;
 import org.apache.hadoop.mapreduce.task.reduce.ShuffleHeader;
 
-import org.apache.hadoop.yarn.ApplicationID;
 
 import org.apache.hadoop.security.token.Token;
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
 import org.apache.hadoop.yarn.server.nodemanager.NMConfig;
 import org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices;
 import org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ApplicationLocalizer;
 import org.apache.hadoop.yarn.service.AbstractService;
-import org.apache.hadoop.yarn.util.AvroUtil;
+import org.apache.hadoop.yarn.util.ConverterUtils;
 import org.apache.hadoop.mapreduce.security.token.JobTokenIdentifier;
 import org.apache.hadoop.mapreduce.security.token.JobTokenSecretManager;
 
 // DEBUG
 import org.apache.commons.logging.impl.Log4JLogger;
-import org.apache.commons.logging.impl.Log4JLogger;
 import org.apache.log4j.Level;
 
 // TODO packaging
@@ -131,7 +131,7 @@ public class ShuffleHandler extends Abst
   }
 
   @Override
-  public void initApp(String user, ApplicationID appId, ByteBuffer secret) {
+  public void initApp(String user, ApplicationId appId, ByteBuffer secret) {
     // TODO these bytes should be versioned
     try {
       DataInputByteBuffer in = new DataInputByteBuffer();
@@ -139,7 +139,7 @@ public class ShuffleHandler extends Abst
       Token<JobTokenIdentifier> jt = new Token<JobTokenIdentifier>();
       jt.readFields(in);
       // TODO: Once SHuffle is out of NM, this can use MR APIs
-      JobID jobId = new JobID(Long.toString(appId.clusterTimeStamp), appId.id);
+      JobID jobId = new JobID(Long.toString(appId.getClusterTimestamp()), appId.getId());
       userRsrc.put(jobId.toString(), user);
       LOG.info("Added token for " + jobId.toString());
       secretManager.addTokenForJob(jobId.toString(), jt);
@@ -150,8 +150,8 @@ public class ShuffleHandler extends Abst
   }
 
   @Override
-  public void stopApp(ApplicationID appId) {
-    JobID jobId = new JobID(Long.toString(appId.clusterTimeStamp), appId.id);
+  public void stopApp(ApplicationId appId) {
+    JobID jobId = new JobID(Long.toString(appId.getClusterTimestamp()), appId.getId());
     secretManager.removeTokenForJob(jobId.toString());
   }
 
@@ -346,13 +346,13 @@ public class ShuffleHandler extends Abst
       // $x/$user/appcache/$appId/output/$mapId
       // TODO: Once Shuffle is out of NM, this can use MR APIs to convert between App and Job
       JobID jobID = JobID.forName(jobId);
-      ApplicationID appID = new ApplicationID();
-      appID.clusterTimeStamp = Long.parseLong(jobID.getJtIdentifier());
-      appID.id = jobID.getId();
+      ApplicationId appID = RecordFactoryProvider.getRecordFactory(null).newRecordInstance(ApplicationId.class);
+      appID.setClusterTimestamp(Long.parseLong(jobID.getJtIdentifier()));
+      appID.setId(jobID.getId());
       final String base =
           ApplicationLocalizer.USERCACHE + "/" + user + "/"
               + ApplicationLocalizer.APPCACHE + "/"
-              + AvroUtil.toString(appID) + "/output" + "/" + mapId;
+              + ConverterUtils.toString(appID) + "/output" + "/" + mapId;
       LOG.debug("DEBUG0 " + base);
       // Index file
       Path indexFileName = lDirAlloc.getLocalPathToRead(

Modified: hadoop/mapreduce/branches/MR-279/pom.xml
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/pom.xml?rev=1087462&r1=1087461&r2=1087462&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/pom.xml (original)
+++ hadoop/mapreduce/branches/MR-279/pom.xml Thu Mar 31 22:23:22 2011
@@ -23,6 +23,11 @@
     <!-- The Avro dependency must be defined before hadoop-common to override 
     the transitive dependency on avro in hadoop-common. -->
     <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+      <version>2.4.0a</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.avro</groupId>
       <artifactId>avro</artifactId>
       <version>1.4.1</version>

Modified: hadoop/mapreduce/branches/MR-279/yarn/README
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/README?rev=1087462&r1=1087461&r2=1087462&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/README (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/README Thu Mar 31 22:23:22 2011
@@ -11,6 +11,17 @@ Setup
 Install the Avro maven plugin in local maven repository:
 mvn install:install-file -Dfile=./avro-maven-plugin/avro-maven-plugin-1.4.0-SNAPSHOT.jar -DpomFile=./avro-maven-plugin/avro-maven-plugin-1.4.0-SNAPSHOT.pom
 
+Install protobuf 2.4.0a (Download from http://code.google.com/p/protobuf/downloads/list)
+ - install the protoc executable (configure, make, make install)
+ - install the maven artifact (mvn install)
+Installing protoc requires gcc 4.1.x or higher.
+If the make step fails with (Valid until a fix is released for protobuf 2.4.0a)
+    ./google/protobuf/descriptor.h:1152: error:
+    `google::protobuf::internal::Mutex*google::protobuf::DescriptorPool::mutex_'
+    is private
+  Replace descriptor.cc with http://protobuf.googlecode.com/svn-history/r380/trunk/src/google/protobuf/descriptor.cc
+
+
 Quick Maven Tips
 ----------------
 clean workspace: mvn clean

Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/pom.xml
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/pom.xml?rev=1087462&r1=1087461&r2=1087462&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/pom.xml (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/pom.xml Thu Mar 31 22:23:22 2011
@@ -18,7 +18,7 @@
   <url>http://maven.apache.org</url>
   <build>
     <plugins>
-      <plugin>
+      <!--plugin>
         <groupId>org.apache.avro</groupId>
         <artifactId>avro-maven-plugin</artifactId>
         <version>1.4.0-SNAPSHOT</version>
@@ -30,7 +30,85 @@
             </goals>
           </execution>
         </executions>
+      </plugin-->
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>create_generate_src_dirctory</id>
+            <phase>initialize</phase>
+            <configuration>
+              <tasks>
+                <mkdir dir="target/generated-sources/proto" />
+              </tasks>
+            </configuration>
+            <goals>
+              <goal>run</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>exec-maven-plugin</artifactId>
+        <version>1.2</version>
+        <executions>
+          <execution>
+            <id>generate-sources</id>
+            <phase>generate-sources</phase>
+            <configuration>
+              <executable>protoc</executable>
+              <arguments>
+				<argument>-Isrc/main/proto/</argument>
+                <argument>--java_out=target/generated-sources/proto</argument>
+                <argument>src/main/proto/yarn_protos.proto</argument>
+                <argument>src/main/proto/yarn_service_protos.proto</argument>
+                <argument>src/main/proto/AM_RM_protocol.proto</argument>
+                <argument>src/main/proto/client_RM_protocol.proto</argument>
+                <argument>src/main/proto/container_manager.proto</argument>
+              </arguments>
+            </configuration>
+            <goals>
+              <goal>exec</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>1.5</version>
+        <executions>
+          <execution>
+            <id>add-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>add-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>target/generated-sources/proto</source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
       </plugin>
+
+
     </plugins>
   </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+      <version>2.4.0a</version>
+    </dependency>
+  </dependencies>
+
+
 </project>

Modified: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/Application.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/Application.java?rev=1087462&r1=1087461&r2=1087462&view=diff
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/Application.java (original)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/Application.java Thu Mar 31 22:23:22 2011
@@ -18,15 +18,16 @@
 
 package org.apache.hadoop.yarn;
 
-import org.apache.hadoop.yarn.ApplicationID;
-import org.apache.hadoop.yarn.ApplicationState;
-import org.apache.hadoop.yarn.ApplicationStatus;
+
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+import org.apache.hadoop.yarn.api.records.ApplicationState;
+import org.apache.hadoop.yarn.api.records.ApplicationStatus;
 
 /**
  * A read-only application interface
  */
 public interface Application {
-  ApplicationID id();
+  ApplicationId id();
   CharSequence user();
   CharSequence queue();
   CharSequence name();

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/AMRMProtocol.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/AMRMProtocol.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/AMRMProtocol.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/AMRMProtocol.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,15 @@
+package org.apache.hadoop.yarn.api;
+
+import org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse;
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+
+public interface AMRMProtocol {
+  public RegisterApplicationMasterResponse registerApplicationMaster(RegisterApplicationMasterRequest request) throws YarnRemoteException;
+  public FinishApplicationMasterResponse finishApplicationMaster(FinishApplicationMasterRequest request) throws YarnRemoteException;;
+  public AllocateResponse allocate(AllocateRequest request) throws YarnRemoteException;
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/ClientRMProtocol.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/ClientRMProtocol.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/ClientRMProtocol.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/ClientRMProtocol.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,21 @@
+package org.apache.hadoop.yarn.api;
+
+import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationMasterRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetApplicationMasterResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationIdRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationIdResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationResponse;
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+
+public interface ClientRMProtocol {
+  public GetNewApplicationIdResponse getNewApplicationId(GetNewApplicationIdRequest request) throws YarnRemoteException;
+  public GetApplicationMasterResponse getApplicationMaster(GetApplicationMasterRequest request) throws YarnRemoteException;
+  public SubmitApplicationResponse submitApplication(SubmitApplicationRequest request) throws YarnRemoteException;
+  public FinishApplicationResponse finishApplication(FinishApplicationRequest request) throws YarnRemoteException;
+  public GetClusterMetricsResponse getClusterMetrics(GetClusterMetricsRequest request) throws YarnRemoteException;
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/ContainerManager.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/ContainerManager.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/ContainerManager.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/ContainerManager.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,18 @@
+package org.apache.hadoop.yarn.api;
+
+import org.apache.hadoop.yarn.api.protocolrecords.CleanupContainerRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.CleanupContainerResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.StartContainerRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.StartContainerResponse;
+import org.apache.hadoop.yarn.api.protocolrecords.StopContainerRequest;
+import org.apache.hadoop.yarn.api.protocolrecords.StopContainerResponse;
+import org.apache.hadoop.yarn.exceptions.YarnRemoteException;
+
+public interface ContainerManager {
+  StartContainerResponse startContainer(StartContainerRequest request) throws YarnRemoteException;
+  StopContainerResponse stopContainer(StopContainerRequest request) throws YarnRemoteException;
+  CleanupContainerResponse cleanupContainer(CleanupContainerRequest request) throws YarnRemoteException;
+  GetContainerStatusResponse getContainerStatus(GetContainerStatusRequest request) throws YarnRemoteException;
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateRequest.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateRequest.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateRequest.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,31 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import java.util.List;
+
+import org.apache.hadoop.yarn.api.records.ApplicationStatus;
+import org.apache.hadoop.yarn.api.records.Container;
+import org.apache.hadoop.yarn.api.records.ResourceRequest;
+
+public interface AllocateRequest {
+  public abstract ApplicationStatus getApplicationStatus();
+  
+  public abstract List<ResourceRequest> getAskList();
+  public abstract ResourceRequest getAsk(int index);
+  public abstract int getAskCount();
+  
+  public abstract List<Container> getReleaseList();
+  public abstract Container getRelease(int index);
+  public abstract int getReleaseCount();
+  
+  public abstract void setApplicationStatus(ApplicationStatus applicationStatus);
+  
+  public abstract void addAllAsks(List<ResourceRequest> resourceRequest);
+  public abstract void addAsk(ResourceRequest request);
+  public abstract void removeAsk(int index);
+  public abstract void clearAsks();
+  
+  public abstract void addAllReleases(List<Container> releaseContainers);
+  public abstract void addRelease(Container container);
+  public abstract void removeRelease(int index);
+  public abstract void clearReleases();
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateResponse.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateResponse.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateResponse.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/AllocateResponse.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,9 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.AMResponse;
+
+public interface AllocateResponse {
+  public abstract AMResponse getAMResponse();
+  
+  public abstract void setAMResponse(AMResponse amResponse);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/CleanupContainerRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/CleanupContainerRequest.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/CleanupContainerRequest.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/CleanupContainerRequest.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,8 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.ContainerId;
+
+public interface CleanupContainerRequest {
+  public abstract ContainerId getContainerId();
+  public abstract void setContainerId(ContainerId containerId);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/CleanupContainerResponse.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/CleanupContainerResponse.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/CleanupContainerResponse.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/CleanupContainerResponse.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,5 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+public interface CleanupContainerResponse {
+
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationMasterRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationMasterRequest.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationMasterRequest.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationMasterRequest.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,8 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.ApplicationMaster;
+
+public interface FinishApplicationMasterRequest {
+  public abstract ApplicationMaster getApplicationMaster();
+  public abstract void setApplicationMaster(ApplicationMaster applicationMaster);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationMasterResponse.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationMasterResponse.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationMasterResponse.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationMasterResponse.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,5 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+public interface FinishApplicationMasterResponse {
+
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationRequest.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationRequest.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationRequest.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,9 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+
+public interface FinishApplicationRequest {
+  public abstract ApplicationId getApplicationId();
+  
+  public abstract void setApplicationId(ApplicationId applicationId);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationResponse.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationResponse.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationResponse.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/FinishApplicationResponse.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,5 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+public interface FinishApplicationResponse {
+
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetApplicationMasterRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetApplicationMasterRequest.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetApplicationMasterRequest.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetApplicationMasterRequest.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,8 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+
+public interface GetApplicationMasterRequest {
+  public abstract ApplicationId getApplicationId();
+  public abstract void setApplicationId(ApplicationId applicationId);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetApplicationMasterResponse.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetApplicationMasterResponse.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetApplicationMasterResponse.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetApplicationMasterResponse.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,8 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.ApplicationMaster;
+
+public interface GetApplicationMasterResponse {
+  public abstract ApplicationMaster getApplicationMaster();
+  public abstract void setApplicationMaster(ApplicationMaster applicationMaster);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterMetricsRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterMetricsRequest.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterMetricsRequest.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterMetricsRequest.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,5 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+public interface GetClusterMetricsRequest {
+
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterMetricsResponse.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterMetricsResponse.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterMetricsResponse.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterMetricsResponse.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,8 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.YarnClusterMetrics;
+
+public interface GetClusterMetricsResponse {
+  public abstract YarnClusterMetrics getClusterMetrics();
+  public abstract void setClusterMetrics(YarnClusterMetrics metrics);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetContainerStatusRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetContainerStatusRequest.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetContainerStatusRequest.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetContainerStatusRequest.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,8 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.ContainerId;
+
+public interface GetContainerStatusRequest {
+  public abstract ContainerId getContainerId();
+  public abstract void setContainerId(ContainerId containerId);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetContainerStatusResponse.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetContainerStatusResponse.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetContainerStatusResponse.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetContainerStatusResponse.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,8 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.ContainerStatus;
+
+public interface GetContainerStatusResponse {
+  public abstract ContainerStatus getStatus();
+  public abstract void setStatus(ContainerStatus containerStatus);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetNewApplicationIdRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetNewApplicationIdRequest.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetNewApplicationIdRequest.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetNewApplicationIdRequest.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,5 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+public interface GetNewApplicationIdRequest {
+
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetNewApplicationIdResponse.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetNewApplicationIdResponse.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetNewApplicationIdResponse.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetNewApplicationIdResponse.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,8 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.ApplicationId;
+
+public interface GetNewApplicationIdResponse {
+  public abstract ApplicationId getApplicationId();
+  public abstract void setApplicationId(ApplicationId applicationId);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/RegisterApplicationMasterRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/RegisterApplicationMasterRequest.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/RegisterApplicationMasterRequest.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/RegisterApplicationMasterRequest.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,9 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.ApplicationMaster;
+
+public interface RegisterApplicationMasterRequest {
+  public abstract ApplicationMaster getApplicationMaster();
+  
+  public abstract void setApplicationMaster(ApplicationMaster applicationMaster);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/RegisterApplicationMasterResponse.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/RegisterApplicationMasterResponse.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/RegisterApplicationMasterResponse.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/RegisterApplicationMasterResponse.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,5 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+public interface RegisterApplicationMasterResponse {
+  
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StartContainerRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StartContainerRequest.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StartContainerRequest.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StartContainerRequest.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,9 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
+
+public interface StartContainerRequest {
+  public abstract ContainerLaunchContext getContainerLaunchContext();
+  
+  public abstract void setContainerLaunchContext(ContainerLaunchContext context);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StartContainerResponse.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StartContainerResponse.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StartContainerResponse.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StartContainerResponse.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,5 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+public interface StartContainerResponse {
+
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StopContainerRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StopContainerRequest.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StopContainerRequest.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StopContainerRequest.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,8 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.ContainerId;
+
+public interface StopContainerRequest {
+  public abstract ContainerId getContainerId();
+  public abstract void setContainerId(ContainerId containerId);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StopContainerResponse.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StopContainerResponse.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StopContainerResponse.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/StopContainerResponse.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,5 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+public interface StopContainerResponse {
+
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/SubmitApplicationRequest.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/SubmitApplicationRequest.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/SubmitApplicationRequest.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/SubmitApplicationRequest.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,8 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
+
+public interface SubmitApplicationRequest {
+  public abstract ApplicationSubmissionContext getApplicationSubmissionContext();
+  public abstract void setApplicationSubmissionContext(ApplicationSubmissionContext context);
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/SubmitApplicationResponse.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/SubmitApplicationResponse.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/SubmitApplicationResponse.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/SubmitApplicationResponse.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,5 @@
+package org.apache.hadoop.yarn.api.protocolrecords;
+
+public interface SubmitApplicationResponse {
+
+}

Added: hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/AllocateRequestPBImpl.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/AllocateRequestPBImpl.java?rev=1087462&view=auto
==============================================================================
--- hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/AllocateRequestPBImpl.java (added)
+++ hadoop/mapreduce/branches/MR-279/yarn/yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/AllocateRequestPBImpl.java Thu Mar 31 22:23:22 2011
@@ -0,0 +1,295 @@
+package org.apache.hadoop.yarn.api.protocolrecords.impl.pb;
+
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest;
+import org.apache.hadoop.yarn.api.records.ApplicationStatus;
+import org.apache.hadoop.yarn.api.records.Container;
+import org.apache.hadoop.yarn.api.records.ProtoBase;
+import org.apache.hadoop.yarn.api.records.ResourceRequest;
+import org.apache.hadoop.yarn.api.records.impl.pb.ApplicationStatusPBImpl;
+import org.apache.hadoop.yarn.api.records.impl.pb.ContainerPBImpl;
+import org.apache.hadoop.yarn.api.records.impl.pb.ResourceRequestPBImpl;
+import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationStatusProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.ContainerProto;
+import org.apache.hadoop.yarn.proto.YarnProtos.ResourceRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.AllocateRequestProto;
+import org.apache.hadoop.yarn.proto.YarnServiceProtos.AllocateRequestProtoOrBuilder;
+
+
+    
+public class AllocateRequestPBImpl extends ProtoBase<AllocateRequestProto> implements AllocateRequest {
+  AllocateRequestProto proto = AllocateRequestProto.getDefaultInstance();
+  AllocateRequestProto.Builder builder = null;
+  boolean viaProto = false;
+  
+  private ApplicationStatus applicationStatus = null;
+  private List<ResourceRequest> ask = null;
+  private List<Container> release = null;
+  
+  
+  public AllocateRequestPBImpl() {
+    builder = AllocateRequestProto.newBuilder();
+  }
+
+  public AllocateRequestPBImpl(AllocateRequestProto proto) {
+    this.proto = proto;
+    viaProto = true;
+  }
+  
+  public AllocateRequestProto getProto() {
+      mergeLocalToProto();
+    proto = viaProto ? proto : builder.build();
+    viaProto = true;
+    return proto;
+  }
+
+  private void mergeLocalToBuilder() {
+    if (this.applicationStatus != null) {
+      builder.setApplicationStatus(convertToProtoFormat(this.applicationStatus));
+    }
+    if (this.ask != null) {
+      addAsksToProto();
+    }
+    if (this.release != null) {
+      addReleasesToProto();
+    }
+  }
+
+  private void mergeLocalToProto() {
+    if (viaProto) 
+      maybeInitBuilder();
+    mergeLocalToBuilder();
+    proto = builder.build();
+    viaProto = true;
+  }
+
+  private void maybeInitBuilder() {
+    if (viaProto || builder == null) {
+      builder = AllocateRequestProto.newBuilder(proto);
+    }
+    viaProto = false;
+  }
+    
+  
+  @Override
+  public ApplicationStatus getApplicationStatus() {
+    AllocateRequestProtoOrBuilder p = viaProto ? proto : builder;
+    if (this.applicationStatus != null) {
+      return this.applicationStatus;
+    }
+    if (!p.hasApplicationStatus()) {
+      return null;
+    }
+    this.applicationStatus = convertFromProtoFormat(p.getApplicationStatus());
+    return this.applicationStatus;
+  }
+
+  @Override
+  public void setApplicationStatus(ApplicationStatus applicationStatus) {
+    maybeInitBuilder();
+    if (applicationStatus == null) 
+      builder.clearApplicationStatus();
+    this.applicationStatus = applicationStatus;
+  }
+  @Override
+  public List<ResourceRequest> getAskList() {
+    initAsks();
+    return this.ask;
+  }
+  @Override
+  public ResourceRequest getAsk(int index) {
+    initAsks();
+    return this.ask.get(index);
+  }
+  @Override
+  public int getAskCount() {
+    initAsks();
+    return this.ask.size();
+  }
+  
+  private void initAsks() {
+    if (this.ask != null) {
+      return;
+    }
+    AllocateRequestProtoOrBuilder p = viaProto ? proto : builder;
+    List<ResourceRequestProto> list = p.getAskList();
+    this.ask = new ArrayList<ResourceRequest>();
+
+    for (ResourceRequestProto c : list) {
+      this.ask.add(convertFromProtoFormat(c));
+    }
+  }
+  
+  @Override
+  public void addAllAsks(final List<ResourceRequest> ask) {
+    if (ask == null)
+      return;
+    initAsks();
+    this.ask.addAll(ask);
+  }
+  
+  private void addAsksToProto() {
+    maybeInitBuilder();
+    builder.clearAsk();
+    if (ask == null)
+      return;
+    Iterable<ResourceRequestProto> iterable = new Iterable<ResourceRequestProto>() {
+      @Override
+      public Iterator<ResourceRequestProto> iterator() {
+        return new Iterator<ResourceRequestProto>() {
+
+          Iterator<ResourceRequest> iter = ask.iterator();
+
+          @Override
+          public boolean hasNext() {
+            return iter.hasNext();
+          }
+
+          @Override
+          public ResourceRequestProto next() {
+            return convertToProtoFormat(iter.next());
+          }
+
+          @Override
+          public void remove() {
+            throw new UnsupportedOperationException();
+
+          }
+        };
+
+      }
+    };
+    builder.addAllAsk(iterable);
+  }
+  @Override
+  public void addAsk(ResourceRequest ask) {
+    initAsks();
+    this.ask.add(ask);
+  }
+  @Override
+  public void removeAsk(int index) {
+    initAsks();
+    this.ask.remove(index);
+  }
+  @Override
+  public void clearAsks() {
+    initAsks();
+    this.ask.clear();
+  }
+  @Override
+  public List<Container> getReleaseList() {
+    initReleases();
+    return this.release;
+  }
+  @Override
+  public Container getRelease(int index) {
+    initReleases();
+    return this.release.get(index);
+  }
+  @Override
+  public int getReleaseCount() {
+    initReleases();
+    return this.release.size();
+  }
+  
+  private void initReleases() {
+    if (this.release != null) {
+      return;
+    }
+    AllocateRequestProtoOrBuilder p = viaProto ? proto : builder;
+    List<ContainerProto> list = p.getReleaseList();
+    this.release = new ArrayList<Container>();
+
+    for (ContainerProto c : list) {
+      this.release.add(convertFromProtoFormat(c));
+    }
+  }
+  
+  @Override
+  public void addAllReleases(final List<Container> release) {
+    if (release == null)
+      return;
+    initReleases();
+    this.release.addAll(release);
+  }
+  
+  private void addReleasesToProto() {
+    maybeInitBuilder();
+    builder.clearRelease();
+    if (release == null)
+      return;
+    Iterable<ContainerProto> iterable = new Iterable<ContainerProto>() {
+      @Override
+      public Iterator<ContainerProto> iterator() {
+        return new Iterator<ContainerProto>() {
+
+          Iterator<Container> iter = release.iterator();
+
+          @Override
+          public boolean hasNext() {
+            return iter.hasNext();
+          }
+
+          @Override
+          public ContainerProto next() {
+            return convertToProtoFormat(iter.next());
+          }
+
+          @Override
+          public void remove() {
+            throw new UnsupportedOperationException();
+
+          }
+        };
+
+      }
+    };
+    builder.addAllRelease(iterable);
+  }
+  @Override
+  public void addRelease(Container release) {
+    initReleases();
+    this.release.add(release);
+  }
+  @Override
+  public void removeRelease(int index) {
+    initReleases();
+    this.release.remove(index);
+  }
+  @Override
+  public void clearReleases() {
+    initReleases();
+    this.release.clear();
+  }
+
+  private ApplicationStatusPBImpl convertFromProtoFormat(ApplicationStatusProto p) {
+    return new ApplicationStatusPBImpl(p);
+  }
+
+  private ApplicationStatusProto convertToProtoFormat(ApplicationStatus t) {
+    return ((ApplicationStatusPBImpl)t).getProto();
+  }
+
+  private ResourceRequestPBImpl convertFromProtoFormat(ResourceRequestProto p) {
+    return new ResourceRequestPBImpl(p);
+  }
+
+  private ResourceRequestProto convertToProtoFormat(ResourceRequest t) {
+    return ((ResourceRequestPBImpl)t).getProto();
+  }
+
+  private ContainerPBImpl convertFromProtoFormat(ContainerProto p) {
+    return new ContainerPBImpl(p);
+  }
+
+  private ContainerProto convertToProtoFormat(Container t) {
+    return ((ContainerPBImpl)t).getProto();
+  }
+
+
+
+}