InterTrackerProtocol.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. /** 
  22.  * Protocol that a TaskTracker and the central JobTracker use to communicate.
  23.  * The JobTracker is the Server, which implements this protocol.
  24.  */ 
  25. interface InterTrackerProtocol extends VersionedProtocol {
  26.   /**
  27.    * version 3 introduced to replace 
  28.    * emitHearbeat/pollForNewTask/pollForTaskWithClosedJob with
  29.    * {@link #heartbeat(TaskTrackerStatus, boolean, boolean, boolean, short)}
  30.    * version 4 changed TaskReport for HADOOP-549.
  31.    * version 5 introduced that removes locateMapOutputs and instead uses
  32.    * getTaskCompletionEvents to figure finished maps and fetch the outputs
  33.    * version 6 adds maxTasks to TaskTrackerStatus for HADOOP-1245
  34.    * version 7 replaces maxTasks by maxMapTasks and maxReduceTasks in 
  35.    * TaskTrackerStatus for HADOOP-1274
  36.    * Version 8: HeartbeatResponse is added with the next heartbeat interval.
  37.    * version 9 changes the counter representation for HADOOP-2248
  38.    * version 10 changes the TaskStatus representation for HADOOP-2208
  39.    * version 11 changes string to JobID in getTaskCompletionEvents().
  40.    * version 12 changes the counters representation for HADOOP-1915
  41.    * version 13 added call getBuildVersion() for HADOOP-236
  42.    * Version 14: replaced getFilesystemName with getSystemDir for HADOOP-3135
  43.    * Version 15: Changed format of Task and TaskStatus for HADOOP-153
  44.    * Version 16: adds ResourceStatus to TaskTrackerStatus for HADOOP-3759
  45.    * Version 17: Changed format of Task and TaskStatus for HADOOP-3150
  46.    * Version 18: Changed status message due to changes in TaskStatus
  47.    * Version 19: Changed heartbeat to piggyback JobTracker restart information
  48.                  so that the TaskTracker can synchronize itself.
  49.    * Version 20: Changed status message due to changes in TaskStatus
  50.    *             (HADOOP-4232)
  51.    * Version 21: Changed information reported in TaskTrackerStatus'
  52.    *             ResourceStatus and the corresponding accessor methods
  53.    *             (HADOOP-4035)
  54.    * Version 22: Replaced parameter 'initialContact' with 'restarted' 
  55.    *             in heartbeat method (HADOOP-4305) 
  56.    * Version 23: Added parameter 'initialContact' again in heartbeat method
  57.    *            (HADOOP-4869) 
  58.    * Version 24: Changed format of Task and TaskStatus for HADOOP-4759 
  59.    * Version 25: JobIDs are passed in response to JobTracker restart 
  60.    */
  61.   public static final long versionID = 25L;
  62.   
  63.   public final static int TRACKERS_OK = 0;
  64.   public final static int UNKNOWN_TASKTRACKER = 1;
  65.   /**
  66.    * Called regularly by the {@link TaskTracker} to update the status of its 
  67.    * tasks within the job tracker. {@link JobTracker} responds with a 
  68.    * {@link HeartbeatResponse} that directs the 
  69.    * {@link TaskTracker} to undertake a series of 'actions' 
  70.    * (see {@link org.apache.hadoop.mapred.TaskTrackerAction.ActionType}).  
  71.    * 
  72.    * {@link TaskTracker} must also indicate whether this is the first 
  73.    * interaction (since state refresh) and acknowledge the last response
  74.    * it recieved from the {@link JobTracker} 
  75.    * 
  76.    * @param status the status update
  77.    * @param restarted <code>true</code> if the process has just started or 
  78.    *                   restarted, <code>false</code> otherwise
  79.    * @param initialContact <code>true</code> if this is first interaction since
  80.    *                       'refresh', <code>false</code> otherwise.
  81.    * @param acceptNewTasks <code>true</code> if the {@link TaskTracker} is
  82.    *                       ready to accept new tasks to run.                 
  83.    * @param responseId the last responseId successfully acted upon by the
  84.    *                   {@link TaskTracker}.
  85.    * @return a {@link org.apache.hadoop.mapred.HeartbeatResponse} with 
  86.    *         fresh instructions.
  87.    */
  88.   HeartbeatResponse heartbeat(TaskTrackerStatus status, 
  89.                               boolean restarted, 
  90.                               boolean initialContact,
  91.                               boolean acceptNewTasks,
  92.                               short responseId)
  93.     throws IOException;
  94.   
  95.   /**
  96.    * The task tracker calls this once, to discern where it can find
  97.    * files referred to by the JobTracker
  98.    */
  99.   public String getFilesystemName() throws IOException;
  100.   /**
  101.    * Report a problem to the job tracker.
  102.    * @param taskTracker the name of the task tracker
  103.    * @param errorClass the kind of error (eg. the class that was thrown)
  104.    * @param errorMessage the human readable error message
  105.    * @throws IOException if there was a problem in communication or on the
  106.    *                     remote side
  107.    */
  108.   public void reportTaskTrackerError(String taskTracker,
  109.                                      String errorClass,
  110.                                      String errorMessage) throws IOException;
  111.   /**
  112.    * Get task completion events for the jobid, starting from fromEventId. 
  113.    * Returns empty aray if no events are available. 
  114.    * @param jobid job id 
  115.    * @param fromEventId event id to start from. 
  116.    * @param maxEvents the max number of events we want to look at
  117.    * @return array of task completion events. 
  118.    * @throws IOException
  119.    */
  120.   TaskCompletionEvent[] getTaskCompletionEvents(JobID jobid, int fromEventId
  121.       , int maxEvents) throws IOException;
  122.   /**
  123.    * Grab the jobtracker system directory path where job-specific files are to be placed.
  124.    * 
  125.    * @return the system directory where job-specific files are to be placed.
  126.    */
  127.   public String getSystemDir();
  128.   
  129.   
  130.   /**
  131.    * Returns the buildVersion of the JobTracker 
  132.    */
  133.   public String getBuildVersion() throws IOException;
  134. }