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

网格计算

开发平台:

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. import org.apache.hadoop.mapred.JvmTask;
  22. /** Protocol that task child process uses to contact its parent process.  The
  23.  * parent is a daemon which which polls the central master for a new map or
  24.  * reduce task and runs it as a child process.  All communication between child
  25.  * and parent is via this protocol. */ 
  26. interface TaskUmbilicalProtocol extends VersionedProtocol {
  27.   /** 
  28.    * Changed the version to 2, since we have a new method getMapOutputs 
  29.    * Changed version to 3 to have progress() return a boolean
  30.    * Changed the version to 4, since we have replaced 
  31.    *         TaskUmbilicalProtocol.progress(String, float, String, 
  32.    *         org.apache.hadoop.mapred.TaskStatus.Phase, Counters) 
  33.    *         with statusUpdate(String, TaskStatus)
  34.    * 
  35.    * Version 5 changed counters representation for HADOOP-2248
  36.    * Version 6 changes the TaskStatus representation for HADOOP-2208
  37.    * Version 7 changes the done api (via HADOOP-3140). It now expects whether
  38.    *           or not the task's output needs to be promoted.
  39.    * Version 8 changes {job|tip|task}id's to use their corresponding 
  40.    * objects rather than strings.
  41.    * Version 9 changes the counter representation for HADOOP-1915
  42.    * Version 10 changed the TaskStatus format and added reportNextRecordRange
  43.    *            for HADOOP-153
  44.    * Version 11 Adds RPCs for task commit as part of HADOOP-3150
  45.    * Version 12 getMapCompletionEvents() now also indicates if the events are 
  46.    *            stale or not. Hence the return type is a class that 
  47.    *            encapsulates the events and whether to reset events index.
  48.    * Version 13 changed the getTask method signature for HADOOP-249
  49.    * Version 14 changed the getTask method signature for HADOOP-4232
  50.    * Version 15 Adds FAILED_UNCLEAN and KILLED_UNCLEAN states for HADOOP-4759
  51.    * */
  52.   public static final long versionID = 15L;
  53.   
  54.   /**
  55.    * Called when a child task process starts, to get its task.
  56.    * @param jvmId the ID of this JVM w.r.t the tasktracker that launched it
  57.    * @return Task object
  58.    * @throws IOException 
  59.    */
  60.   JvmTask getTask(JVMId jvmId) throws IOException;
  61.   /**
  62.    * Report child's progress to parent.
  63.    * 
  64.    * @param taskId task-id of the child
  65.    * @param taskStatus status of the child
  66.    * @throws IOException
  67.    * @throws InterruptedException
  68.    * @return True if the task is known
  69.    */
  70.   boolean statusUpdate(TaskAttemptID taskId, TaskStatus taskStatus) 
  71.   throws IOException, InterruptedException;
  72.   
  73.   /** Report error messages back to parent.  Calls should be sparing, since all
  74.    *  such messages are held in the job tracker.
  75.    *  @param taskid the id of the task involved
  76.    *  @param trace the text to report
  77.    */
  78.   void reportDiagnosticInfo(TaskAttemptID taskid, String trace) throws IOException;
  79.   
  80.   /**
  81.    * Report the record range which is going to process next by the Task.
  82.    * @param taskid the id of the task involved
  83.    * @param range the range of record sequence nos
  84.    * @throws IOException
  85.    */
  86.   void reportNextRecordRange(TaskAttemptID taskid, SortedRanges.Range range) 
  87.     throws IOException;
  88.   /** Periodically called by child to check if parent is still alive. 
  89.    * @return True if the task is known
  90.    */
  91.   boolean ping(TaskAttemptID taskid) throws IOException;
  92.   /** Report that the task is successfully completed.  Failure is assumed if
  93.    * the task process exits without calling this.
  94.    * @param taskid task's id
  95.    */
  96.   void done(TaskAttemptID taskid) throws IOException;
  97.   
  98.   /** 
  99.    * Report that the task is complete, but its commit is pending.
  100.    * 
  101.    * @param taskId task's id
  102.    * @param taskStatus status of the child
  103.    * @throws IOException
  104.    */
  105.   void commitPending(TaskAttemptID taskId, TaskStatus taskStatus) 
  106.   throws IOException, InterruptedException;  
  107.   /**
  108.    * Polling to know whether the task can go-ahead with commit 
  109.    * @param taskid
  110.    * @return true/false 
  111.    * @throws IOException
  112.    */
  113.   boolean canCommit(TaskAttemptID taskid) throws IOException;
  114.   /** Report that a reduce-task couldn't shuffle map-outputs.*/
  115.   void shuffleError(TaskAttemptID taskId, String message) throws IOException;
  116.   
  117.   /** Report that the task encounted a local filesystem error.*/
  118.   void fsError(TaskAttemptID taskId, String message) throws IOException;
  119.   /** Called by a reduce task to get the map output locations for finished maps.
  120.    * Returns an update centered around the map-task-completion-events. 
  121.    * The update also piggybacks the information whether the events copy at the 
  122.    * task-tracker has changed or not. This will trigger some action at the 
  123.    * child-process.
  124.    *
  125.    * @param taskId the reduce task id
  126.    * @param fromIndex the index starting from which the locations should be 
  127.    * fetched
  128.    * @param maxLocs the max number of locations to fetch
  129.    * @param id The attempt id of the task that is trying to communicate
  130.    * @return A {@link MapTaskCompletionEventsUpdate} 
  131.    */
  132.   MapTaskCompletionEventsUpdate getMapCompletionEvents(JobID jobId, 
  133.                                                        int fromIndex, 
  134.                                                        int maxLocs,
  135.                                                        TaskAttemptID id) 
  136.   throws IOException;
  137. }