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

网格计算

开发平台:

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.DataInput;
  20. import java.io.DataOutput;
  21. import java.io.IOException;
  22. import org.apache.hadoop.io.Writable;
  23. import org.apache.hadoop.io.WritableUtils;
  24. /**
  25.  * A generic directive from the {@link org.apache.hadoop.mapred.JobTracker}
  26.  * to the {@link org.apache.hadoop.mapred.TaskTracker} to take some 'action'. 
  27.  * 
  28.  */
  29. abstract class TaskTrackerAction implements Writable {
  30.   
  31.   /**
  32.    * Ennumeration of various 'actions' that the {@link JobTracker}
  33.    * directs the {@link TaskTracker} to perform periodically.
  34.    * 
  35.    */
  36.   public static enum ActionType {
  37.     /** Launch a new task. */
  38.     LAUNCH_TASK,
  39.     
  40.     /** Kill a task. */
  41.     KILL_TASK,
  42.     
  43.     /** Kill any tasks of this job and cleanup. */
  44.     KILL_JOB,
  45.     
  46.     /** Reinitialize the tasktracker. */
  47.     REINIT_TRACKER,
  48.     /** Ask a task to save its output. */
  49.     COMMIT_TASK
  50.   };
  51.   
  52.   /**
  53.    * A factory-method to create objects of given {@link ActionType}. 
  54.    * @param actionType the {@link ActionType} of object to create.
  55.    * @return an object of {@link ActionType}.
  56.    */
  57.   public static TaskTrackerAction createAction(ActionType actionType) {
  58.     TaskTrackerAction action = null;
  59.     
  60.     switch (actionType) {
  61.     case LAUNCH_TASK:
  62.       {
  63.         action = new LaunchTaskAction();
  64.       }
  65.       break;
  66.     case KILL_TASK:
  67.       {
  68.         action = new KillTaskAction();
  69.       }
  70.       break;
  71.     case KILL_JOB:
  72.       {
  73.         action = new KillJobAction();
  74.       }
  75.       break;
  76.     case REINIT_TRACKER:
  77.       {
  78.         action = new ReinitTrackerAction();
  79.       }
  80.       break;
  81.     case COMMIT_TASK:
  82.       {
  83.         action = new CommitTaskAction();
  84.       }
  85.       break;
  86.     }
  87.     return action;
  88.   }
  89.   
  90.   private ActionType actionType;
  91.   
  92.   protected TaskTrackerAction(ActionType actionType) {
  93.     this.actionType = actionType;
  94.   }
  95.   
  96.   /**
  97.    * Return the {@link ActionType}.
  98.    * @return the {@link ActionType}.
  99.    */
  100.   ActionType getActionId() {
  101.     return actionType;
  102.   }
  103.   public void write(DataOutput out) throws IOException {
  104.     WritableUtils.writeEnum(out, actionType);
  105.   }
  106.   
  107.   public void readFields(DataInput in) throws IOException {
  108.     actionType = WritableUtils.readEnum(in, ActionType.class);
  109.   }
  110. }