DownwardProtocol.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.pipes;
  19. import java.io.IOException;
  20. import org.apache.hadoop.io.Writable;
  21. import org.apache.hadoop.io.WritableComparable;
  22. import org.apache.hadoop.mapred.InputSplit;
  23. import org.apache.hadoop.mapred.JobConf;
  24. /**
  25.  * The abstract description of the downward (from Java to C++) Pipes protocol.
  26.  * All of these calls are asynchronous and return before the message has been 
  27.  * processed.
  28.  */
  29. interface DownwardProtocol<K extends WritableComparable, V extends Writable> {
  30.   /**
  31.    * Start communication
  32.    * @throws IOException
  33.    */
  34.   void start() throws IOException;
  35.   
  36.   /**
  37.    * Set the JobConf for the task.
  38.    * @param conf
  39.    * @throws IOException
  40.    */
  41.   void setJobConf(JobConf conf) throws IOException;
  42.   
  43.   /**
  44.    * Set the input types for Maps.
  45.    * @param keyType the name of the key's type
  46.    * @param valueType the name of the value's type
  47.    * @throws IOException
  48.    */
  49.   void setInputTypes(String keyType, String valueType) throws IOException;
  50.   
  51.   /**
  52.    * Run a map task in the child.
  53.    * @param split The input split for this map.
  54.    * @param numReduces The number of reduces for this job.
  55.    * @param pipedInput Is the input coming from Java?
  56.    * @throws IOException
  57.    */
  58.   void runMap(InputSplit split, int numReduces, 
  59.               boolean pipedInput) throws IOException;
  60.   
  61.   /**
  62.    * For maps with pipedInput, the key/value pairs are sent via this messaage.
  63.    * @param key The record's key
  64.    * @param value The record's value
  65.    * @throws IOException
  66.    */
  67.   void mapItem(K key, V value) throws IOException;
  68.   
  69.   /**
  70.    * Run a reduce task in the child
  71.    * @param reduce the index of the reduce (0 .. numReduces - 1)
  72.    * @param pipedOutput is the output being sent to Java?
  73.    * @throws IOException
  74.    */
  75.   void runReduce(int reduce, boolean pipedOutput) throws IOException;
  76.   
  77.   /**
  78.    * The reduce should be given a new key
  79.    * @param key the new key
  80.    * @throws IOException
  81.    */
  82.   void reduceKey(K key) throws IOException;
  83.   
  84.   /**
  85.    * The reduce should be given a new value
  86.    * @param value the new value
  87.    * @throws IOException
  88.    */
  89.   void reduceValue(V value) throws IOException;
  90.   
  91.   /**
  92.    * The task has no more input coming, but it should finish processing it's 
  93.    * input.
  94.    * @throws IOException
  95.    */
  96.   void endOfInput() throws IOException;
  97.   
  98.   /**
  99.    * The task should stop as soon as possible, because something has gone wrong.
  100.    * @throws IOException
  101.    */
  102.   void abort() throws IOException;
  103.   
  104.   /**
  105.    * Flush the data through any buffers.
  106.    */
  107.   void flush() throws IOException;
  108.   
  109.   /**
  110.    * Close the connection.
  111.    */
  112.   void close() throws IOException, InterruptedException;
  113. }