sql >> Base de Datos >  >> NoSQL >> HBase

Hadoop RecordReader Introducción, funcionamiento y tipos

En nuestro blog anterior, hemos estudiado Hadoop Contadores en detalle. Ahora, en este tutorial, hablaremos sobre RecordReader en Hadoop.

Aquí cubriremos la introducción a Hadoop RecordReader, el funcionamiento de RecordReader. También discutiremos los tipos de RecordReader en MapReduce, el tamaño del registro único en Hadoop MapReduce en este tutorial de MapReduce.

¿Qué es RecordReader en MapReduce?

Un RecordReader convierte la vista orientada a bytes de la entrada en una vista orientada a registros para Mapper y Reductor tareas para procesar.

Para comprender Hadoop RecordReader, debemos comprender MapReduce Dataflow. Aprendamos cómo fluyen los datos:

MapReduce es un modelo simple de procesamiento de datos. Las entradas y salidas para el mapa y las funciones de reducción son pares clave-valor . A continuación se muestra la forma general del mapa y las funciones de reducción:

  • Mapa: (K1, V1) → lista (K2, V2)
  • Reducir: (K2, lista (V2)) → lista (K3, V3)

Ahora, antes de que comience el procesamiento, necesita saber qué datos procesar. Entonces, Formato de entrada la clase ayuda a lograr esto. Esta clase selecciona el archivo de HDFS  esa es la entrada a la función de mapa. También es responsable de crear las divisiones de entrada.

Además, divídalos en registros. Divide los datos en el número de divisiones (normalmente 64/128 MB) en HDFS. Esto se conoce como división de entrada. InputSplit es la representación lógica de los datos. En un trabajo de MapReduce, el número de ejecución de las tareas del mapa es igual al número de InputSplits.

Llamando a ‘getSplit ()’ el cliente calcula las divisiones para el trabajo. Luego se envió al maestro de aplicaciones. Utiliza sus ubicaciones de almacenamiento para programar tareas de mapas que los procesarán en el clúster.

Después de que la tarea del mapa pase la división a createRecordReader () método. A partir de ahí, obtiene RecordReader para la división. RecordReader genera un registro (par clave-valor). Luego pasa a la función de mapa.

Hadoop RecordReader en la ejecución del trabajo de MapReduce usa los datos dentro de los límites que está creando la división de entrada. Y luego crea pares clave-valor para el mapeador. El "inicio" es la posición del byte en el archivo.

Al principio, Hadoop RecordReader comienza a generar pares clave/valor. El "final" es donde RecorReader deja de leer registros. En RecordReader, los datos se cargan desde su fuente.

Luego, los datos se convierten en pares clave-valor adecuados para que Mapper los lea. Se comunica con la división de entrada hasta que no se completa la lectura del archivo.

¿Cómo funciona RecorReader en Hadoop?

Es más que un iterador sobre los registros. La tarea de mapa utiliza un registro para generar un par clave-valor que pasa a la función de mapa. También podemos ver esto usando la función de ejecución del mapeador que se muestra a continuación:

public void run(Context context ) throws IOException, InterruptedException{
setup(context);
while(context.nextKeyValue())
{
map(context.setCurrentKey(),context.getCurrentValue(),context)
}
cleanup(context);
}

Aunque no es obligatorio que RecordReader permanezca entre los límites creados por la división de entrada para generar pares clave-valor, por lo general permanece. Además, la implementación personalizada puede incluso leer más datos fuera de la división de entrada.

Luego, después de ejecutar setup() , el nextKeyValue() se repetirá en el contexto. Esto llena los objetos clave y de valor para el asignador. A modo de contexto, el marco recupera el valor clave del lector de registros. Luego pase al map() método para hacer su trabajo.

Por lo tanto, la entrada (clave-valor) a los procesos de función de mapa según la lógica mencionada en el código de mapa. Cuando el registro llega al final del registro, nextKeyValue() método devuelve falso.

Tipos de Hadoop RecordReader

InputFormat define la instancia de  RecordReader, en Hadoop. De forma predeterminada, al utilizar TextInputFormat, ReordReader convierte los datos en pares clave-valor. TextInputFormat también proporciona 2 tipos de RecordReaders que son los siguientes:

1. Lector de registros de línea

Es el RecordReader predeterminado. TextInputFormat proporciona este RecordReader. También trata cada línea del archivo de entrada como el nuevo valor. Entonces la clave asociada es el desplazamiento de bytes. Siempre salta la primera línea de la división (o parte de ella), si no es la primera división.

Siempre lee una línea después del límite de la división al final (si hay datos disponibles, entonces no es la última división).

2. Lector de registros de archivos de secuencia

Este Hadoop RecorReader lee los datos especificados por el encabezado de un archivo de secuencia.

El tamaño máximo del Registro único

Al usar el siguiente parámetro, establecemos el valor máximo.

conf.setInt("mapred.linerecordreader.maxlength", Integer.MAX_VALUE);

Conclusión

En conclusión, Hadoop RecorReader crea la entrada (valor clave) para Mapper. También utiliza TextInputFormat para convertir datos en pares clave-valor.

Espero que te haya gustado este blog si tienes alguna pregunta relacionada con Hadoop RecordReader, no dudes en compartirla con nosotros. Estaremos encantados de resolverlos.