JobSubmissionProtocol.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:8k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.mapred;
  19. import java.io.IOException;
  20. import org.apache.hadoop.ipc.VersionedProtocol;
  21. /** 
  22.  * Protocol that a JobClient and the central JobTracker use to communicate.  The
  23.  * JobClient can use these methods to submit a Job for execution, and learn about
  24.  * the current system status.
  25.  */ 
  26. interface JobSubmissionProtocol extends VersionedProtocol {
  27.   /* 
  28.    *Changing the versionID to 2L since the getTaskCompletionEvents method has
  29.    *changed.
  30.    *Changed to 4 since killTask(String,boolean) is added
  31.    *Version 4: added jobtracker state to ClusterStatus
  32.    *Version 5: max_tasks in ClusterStatus is replaced by
  33.    * max_map_tasks and max_reduce_tasks for HADOOP-1274
  34.    * Version 6: change the counters representation for HADOOP-2248
  35.    * Version 7: added getAllJobs for HADOOP-2487
  36.    * Version 8: change {job|task}id's to use corresponding objects rather that strings.
  37.    * Version 9: change the counter representation for HADOOP-1915
  38.    * Version 10: added getSystemDir for HADOOP-3135
  39.    * Version 11: changed JobProfile to include the queue name for HADOOP-3698
  40.    * Version 12: Added getCleanupTaskReports and 
  41.    *             cleanupProgress to JobStatus as part of HADOOP-3150
  42.    * Version 13: Added getJobQueueInfos and getJobQueueInfo(queue name)
  43.    *             and getAllJobs(queue) as a part of HADOOP-3930
  44.    * Version 14: Added setPriority for HADOOP-4124
  45.    * Version 15: Added KILLED status to JobStatus as part of HADOOP-3924            
  46.    * Version 16: Added getSetupTaskReports and 
  47.    *             setupProgress to JobStatus as part of HADOOP-4261           
  48.    * Version 17: getClusterStatus returns the amount of memory used by 
  49.    *             the server. HADOOP-4435
  50.    * Version 18: Added blacklisted trackers to the ClusterStatus 
  51.    *             for HADOOP-4305
  52.    * Version 19: Modified TaskReport to have TIP status and modified the
  53.    *             method getClusterStatus() to take a boolean argument
  54.    *             for HADOOP-4807
  55.    * Version 20: Modified ClusterStatus to have the tasktracker expiry
  56.    *             interval for HADOOP-4939                     
  57.    */
  58.   public static final long versionID = 20L;
  59.   /**
  60.    * Allocate a name for the job.
  61.    * @return a unique job name for submitting jobs.
  62.    * @throws IOException
  63.    */
  64.   public JobID getNewJobId() throws IOException;
  65.   /**
  66.    * Submit a Job for execution.  Returns the latest profile for
  67.    * that job.
  68.    * The job files should be submitted in <b>system-dir</b>/<b>jobName</b>.
  69.    */
  70.   public JobStatus submitJob(JobID jobName) throws IOException;
  71.   /**
  72.    * Get the current status of the cluster
  73.    * @param detailed if true then report tracker names as well
  74.    * @return summary of the state of the cluster
  75.    */
  76.   public ClusterStatus getClusterStatus(boolean detailed) throws IOException;
  77.   
  78.     
  79.   /**
  80.    * Kill the indicated job
  81.    */
  82.   public void killJob(JobID jobid) throws IOException;
  83.   /**
  84.    * Set the priority of the specified job
  85.    * @param jobid ID of the job
  86.    * @param priority Priority to be set for the job
  87.    */
  88.   public void setJobPriority(JobID jobid, String priority) 
  89.                                                       throws IOException;
  90.   /**
  91.    * Kill indicated task attempt.
  92.    * @param taskId the id of the task to kill.
  93.    * @param shouldFail if true the task is failed and added to failed tasks list, otherwise
  94.    * it is just killed, w/o affecting job failure status.  
  95.    */ 
  96.   public boolean killTask(TaskAttemptID taskId, boolean shouldFail) throws IOException;
  97.   
  98.   /**
  99.    * Grab a handle to a job that is already known to the JobTracker.
  100.    * @return Profile of the job, or null if not found. 
  101.    */
  102.   public JobProfile getJobProfile(JobID jobid) throws IOException;
  103.   /**
  104.    * Grab a handle to a job that is already known to the JobTracker.
  105.    * @return Status of the job, or null if not found.
  106.    */
  107.   public JobStatus getJobStatus(JobID jobid) throws IOException;
  108.   /**
  109.    * Grab the current job counters
  110.    */
  111.   public Counters getJobCounters(JobID jobid) throws IOException;
  112.     
  113.   /**
  114.    * Grab a bunch of info on the map tasks that make up the job
  115.    */
  116.   public TaskReport[] getMapTaskReports(JobID jobid) throws IOException;
  117.   /**
  118.    * Grab a bunch of info on the reduce tasks that make up the job
  119.    */
  120.   public TaskReport[] getReduceTaskReports(JobID jobid) throws IOException;
  121.   /**
  122.    * Grab a bunch of info on the cleanup tasks that make up the job
  123.    */
  124.   public TaskReport[] getCleanupTaskReports(JobID jobid) throws IOException;
  125.   /**
  126.    * Grab a bunch of info on the setup tasks that make up the job
  127.    */
  128.   public TaskReport[] getSetupTaskReports(JobID jobid) throws IOException;
  129.   /**
  130.    * A MapReduce system always operates on a single filesystem.  This 
  131.    * function returns the fs name.  ('local' if the localfs; 'addr:port' 
  132.    * if dfs).  The client can then copy files into the right locations 
  133.    * prior to submitting the job.
  134.    */
  135.   public String getFilesystemName() throws IOException;
  136.   /** 
  137.    * Get the jobs that are not completed and not failed
  138.    * @return array of JobStatus for the running/to-be-run
  139.    * jobs.
  140.    */
  141.   public JobStatus[] jobsToComplete() throws IOException;
  142.     
  143.   /** 
  144.    * Get all the jobs submitted. 
  145.    * @return array of JobStatus for the submitted jobs
  146.    */
  147.   public JobStatus[] getAllJobs() throws IOException;
  148.   
  149.   /**
  150.    * Get task completion events for the jobid, starting from fromEventId. 
  151.    * Returns empty aray if no events are available. 
  152.    * @param jobid job id 
  153.    * @param fromEventId event id to start from.
  154.    * @param maxEvents the max number of events we want to look at 
  155.    * @return array of task completion events. 
  156.    * @throws IOException
  157.    */
  158.   public TaskCompletionEvent[] getTaskCompletionEvents(JobID jobid
  159.       , int fromEventId, int maxEvents) throws IOException;
  160.     
  161.   /**
  162.    * Get the diagnostics for a given task in a given job
  163.    * @param taskId the id of the task
  164.    * @return an array of the diagnostic messages
  165.    */
  166.   public String[] getTaskDiagnostics(TaskAttemptID taskId) 
  167.   throws IOException;
  168.   /**
  169.    * Grab the jobtracker system directory path where job-specific files are to be placed.
  170.    * 
  171.    * @return the system directory where job-specific files are to be placed.
  172.    */
  173.   public String getSystemDir();  
  174.   
  175.   /**
  176.    * Gets set of Job Queues associated with the Job Tracker
  177.    * 
  178.    * @return Array of the Job Queue Information Object
  179.    * @throws IOException 
  180.    */
  181.   public JobQueueInfo[] getQueues() throws IOException;
  182.   
  183.   /**
  184.    * Gets scheduling information associated with the particular Job queue
  185.    * 
  186.    * @param queue Queue Name
  187.    * @return Scheduling Information of the Queue
  188.    * @throws IOException 
  189.    */
  190.   public JobQueueInfo getQueueInfo(String queue) throws IOException;
  191.   
  192.   /**
  193.    * Gets all the jobs submitted to the particular Queue
  194.    * @param queue Queue name
  195.    * @return array of JobStatus for the submitted jobs
  196.    * @throws IOException
  197.    */
  198.   public JobStatus[] getJobsFromQueue(String queue) throws IOException;
  199. }