MapReduce - API
En este capítulo, veremos de cerca las clases y sus métodos que están involucrados en las operaciones de programación de MapReduce. Principalmente nos centraremos en lo siguiente:
- Interfaz JobContext
- Clase de trabajo
- Clase Mapper
- Clase reductora
Interfaz JobContext
La interfaz JobContext es la super interfaz para todas las clases, que define diferentes trabajos en MapReduce. Le brinda una vista de solo lectura del trabajo que se proporciona a las tareas mientras se ejecutan.
Las siguientes son las subinterfaces de la interfaz JobContext.
S.No. | Descripción de la subinterfaz |
---|---|
1. | MapContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT> Define el contexto que se le da al asignador. |
2. | ReduceContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT> Define el contexto que se pasa al reductor. |
La clase de trabajo es la clase principal que implementa la interfaz JobContext.
Clase de trabajo
La clase Job es la clase más importante de la API MapReduce. Permite al usuario configurar el trabajo, enviarlo, controlar su ejecución y consultar el estado. Los métodos establecidos solo funcionan hasta que se envía el trabajo, luego lanzarán una IllegalStateException.
Normalmente, el usuario crea la aplicación, describe las diversas facetas del trabajo y luego envía el trabajo y supervisa su progreso.
A continuación, se muestra un ejemplo de cómo enviar un trabajo:
// Create a new Job
Job job = new Job(new Configuration());
job.setJarByClass(MyJob.class);
// Specify various job-specific parameters
job.setJobName("myjob");
job.setInputPath(new Path("in"));
job.setOutputPath(new Path("out"));
job.setMapperClass(MyJob.MyMapper.class);
job.setReducerClass(MyJob.MyReducer.class);
// Submit the job, then poll for progress until the job is complete
job.waitForCompletion(true);
Constructores
A continuación se muestra el resumen del constructor de la clase Job.
S. No | Resumen del constructor |
---|---|
1 | Job() |
2 | Job(Configuración conf) |
3 | Job(Configuración conf, String jobName) |
Métodos
Algunos de los métodos importantes de la clase Job son los siguientes:
S. No | Descripción del método |
---|---|
1 | getJobName() Nombre del trabajo especificado por el usuario. |
2 | getJobState() Devuelve el estado actual del trabajo. |
3 | isComplete() Comprueba si el trabajo está terminado o no. |
4 | setInputFormatClass() Establece InputFormat para el trabajo. |
5 | setJobName(String name) Establece el nombre del trabajo especificado por el usuario. |
6 | setOutputFormatClass() Establece el formato de salida para el trabajo. |
7 | setMapperClass(Class) Establece el asignador para el trabajo. |
8 | setReducerClass(Class) Configura el reductor para el trabajo. |
9 | setPartitionerClass(Class) Establece el particionador para el trabajo. |
10 | setCombinerClass(Class) Configura el Combinador para el trabajo. |
Clase Mapper
La clase Mapper define el trabajo Map. Asigna pares clave-valor de entrada a un conjunto de pares clave-valor intermedios. Los mapas son las tareas individuales que transforman los registros de entrada en registros intermedios. Los registros intermedios transformados no necesitan ser del mismo tipo que los registros de entrada. Un par de entrada dado puede correlacionarse con cero o con muchos pares de salida.
Método
mapes el método más destacado de la clase Mapper. La sintaxis se define a continuación:
map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)
Este método se llama una vez para cada par clave-valor en la división de entrada.
Clase reductora
La clase Reducer define el trabajo Reducir en MapReduce. Reduce un conjunto de valores intermedios que comparten una clave a un conjunto de valores más pequeño. Las implementaciones de Reducer pueden acceder a la Configuración de un trabajo a través del método JobContext.getConfiguration (). Un reductor tiene tres fases principales: barajar, ordenar y reducir.
Shuffle - Reducer copia la salida ordenada de cada Mapper usando HTTP a través de la red.
Sort- El marco fusiona-ordena las entradas de Reducer por claves (ya que diferentes Mappers pueden tener la misma clave de salida). Las fases de ordenación y ordenación ocurren simultáneamente, es decir, mientras se obtienen las salidas, se fusionan.
Reduce - En esta fase se llama al método reduce (Objeto, Iterable, Contexto) para cada <clave, (colección de valores)> en las entradas ordenadas.
Método
reducees el método más destacado de la clase Reducer. La sintaxis se define a continuación:
reduce(KEYIN key, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context context)
Este método se llama una vez para cada clave en la colección de pares clave-valor.