OutputCommitter.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.mapreduce;
  19. import java.io.IOException;
  20. /**
  21.  * <code>OutputCommitter</code> describes the commit of task output for a 
  22.  * Map-Reduce job.
  23.  *
  24.  * <p>The Map-Reduce framework relies on the <code>OutputCommitter</code> of 
  25.  * the job to:<p>
  26.  * <ol>
  27.  *   <li>
  28.  *   Setup the job during initialization. For example, create the temporary 
  29.  *   output directory for the job during the initialization of the job.
  30.  *   </li>
  31.  *   <li>
  32.  *   Cleanup the job after the job completion. For example, remove the
  33.  *   temporary output directory after the job completion. 
  34.  *   </li>
  35.  *   <li>
  36.  *   Setup the task temporary output.
  37.  *   </li> 
  38.  *   <li>
  39.  *   Check whether a task needs a commit. This is to avoid the commit
  40.  *   procedure if a task does not need commit.
  41.  *   </li>
  42.  *   <li>
  43.  *   Commit of the task output.
  44.  *   </li>  
  45.  *   <li>
  46.  *   Discard the task commit.
  47.  *   </li>
  48.  * </ol>
  49.  * 
  50.  * @see org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter 
  51.  * @see JobContext
  52.  * @see TaskAttemptContext 
  53.  *
  54.  */
  55. public abstract class OutputCommitter {
  56.   /**
  57.    * For the framework to setup the job output during initialization
  58.    * 
  59.    * @param jobContext Context of the job whose output is being written.
  60.    * @throws IOException if temporary output could not be created
  61.    */
  62.   public abstract void setupJob(JobContext jobContext) throws IOException;
  63.   /**
  64.    * For cleaning up the job's output after job completion
  65.    * 
  66.    * @param jobContext Context of the job whose output is being written.
  67.    * @throws IOException
  68.    */
  69.   public abstract void cleanupJob(JobContext jobContext) throws IOException;
  70.   /**
  71.    * Sets up output for the task.
  72.    * 
  73.    * @param taskContext Context of the task whose output is being written.
  74.    * @throws IOException
  75.    */
  76.   public abstract void setupTask(TaskAttemptContext taskContext)
  77.   throws IOException;
  78.   
  79.   /**
  80.    * Check whether task needs a commit
  81.    * 
  82.    * @param taskContext
  83.    * @return true/false
  84.    * @throws IOException
  85.    */
  86.   public abstract boolean needsTaskCommit(TaskAttemptContext taskContext)
  87.   throws IOException;
  88.   /**
  89.    * To promote the task's temporary output to final output location
  90.    * 
  91.    * The task's output is moved to the job's output directory.
  92.    * 
  93.    * @param taskContext Context of the task whose output is being written.
  94.    * @throws IOException if commit is not 
  95.    */
  96.   public abstract void commitTask(TaskAttemptContext taskContext)
  97.   throws IOException;
  98.   
  99.   /**
  100.    * Discard the task output
  101.    * 
  102.    * @param taskContext
  103.    * @throws IOException
  104.    */
  105.   public abstract void abortTask(TaskAttemptContext taskContext)
  106.   throws IOException;
  107. }