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

网格计算

开发平台:

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 org.apache.hadoop.mapred.Counters.Counter;
  20. import org.apache.hadoop.util.Progressable;
  21. /** 
  22.  * A facility for Map-Reduce applications to report progress and update 
  23.  * counters, status information etc.
  24.  * 
  25.  * <p>{@link Mapper} and {@link Reducer} can use the <code>Reporter</code>
  26.  * provided to report progress or just indicate that they are alive. In 
  27.  * scenarios where the application takes an insignificant amount of time to 
  28.  * process individual key/value pairs, this is crucial since the framework 
  29.  * might assume that the task has timed-out and kill that task.
  30.  *
  31.  * <p>Applications can also update {@link Counters} via the provided 
  32.  * <code>Reporter</code> .</p>
  33.  * 
  34.  * @see Progressable
  35.  * @see Counters
  36.  */
  37. public interface Reporter extends Progressable {
  38.   
  39.   /**
  40.    * A constant of Reporter type that does nothing.
  41.    */
  42.   public static final Reporter NULL = new Reporter() {
  43.       public void setStatus(String s) {
  44.       }
  45.       public void progress() {
  46.       }
  47.       public Counter getCounter(Enum<?> name) {
  48.         return null;
  49.       }
  50.       public Counter getCounter(String group, String name) {
  51.         return null;
  52.       }
  53.       public void incrCounter(Enum<?> key, long amount) {
  54.       }
  55.       public void incrCounter(String group, String counter, long amount) {
  56.       }
  57.       public InputSplit getInputSplit() throws UnsupportedOperationException {
  58.         throw new UnsupportedOperationException("NULL reporter has no input");
  59.       }
  60.     };
  61.   /**
  62.    * Set the status description for the task.
  63.    * 
  64.    * @param status brief description of the current status.
  65.    */
  66.   public abstract void setStatus(String status);
  67.   
  68.   /**
  69.    * Get the {@link Counter} of the given group with the given name.
  70.    * 
  71.    * @param name counter name
  72.    * @return the <code>Counter</code> of the given group/name.
  73.    */
  74.   public abstract Counter getCounter(Enum<?> name);
  75.   /**
  76.    * Get the {@link Counter} of the given group with the given name.
  77.    * 
  78.    * @param group counter group
  79.    * @param name counter name
  80.    * @return the <code>Counter</code> of the given group/name.
  81.    */
  82.   public abstract Counter getCounter(String group, String name);
  83.   
  84.   /**
  85.    * Increments the counter identified by the key, which can be of
  86.    * any {@link Enum} type, by the specified amount.
  87.    * 
  88.    * @param key key to identify the counter to be incremented. The key can be
  89.    *            be any <code>Enum</code>. 
  90.    * @param amount A non-negative amount by which the counter is to 
  91.    *               be incremented.
  92.    */
  93.   public abstract void incrCounter(Enum<?> key, long amount);
  94.   
  95.   /**
  96.    * Increments the counter identified by the group and counter name
  97.    * by the specified amount.
  98.    * 
  99.    * @param group name to identify the group of the counter to be incremented.
  100.    * @param counter name to identify the counter within the group.
  101.    * @param amount A non-negative amount by which the counter is to 
  102.    *               be incremented.
  103.    */
  104.   public abstract void incrCounter(String group, String counter, long amount);
  105.   
  106.   /**
  107.    * Get the {@link InputSplit} object for a map.
  108.    * 
  109.    * @return the <code>InputSplit</code> that the map is reading from.
  110.    * @throws UnsupportedOperationException if called outside a mapper
  111.    */
  112.   public abstract InputSplit getInputSplit() 
  113.     throws UnsupportedOperationException;
  114. }