¿Qué es MapReduce?

Publicado por

MapReduce es el nombre que se le da al framework de procesamiento de ficheros en paralelo en nuestro cluster Hadoop. Es un software de desarrollo de aplicaciones que procesa gran número de datos en paralelo. Este procesamiento esta compuesto de varias etapas:

  1. Fichero de entrada: determinar el número de bloques del fichero.
  2. Input Format: se dividen los datos de entrada. Describe la especificación de entrada para un trabajo mapReduce.
  3. Input Split:  son los datos que van a ser procesados por el Mapper. Se corresponden con un un bloque del fichero.
  4. Record Reader: convierte los datos del InputSplit en pares (clave, valor). Un record reader se corresponde con una línea del fichero. La línea será leída como valor y como clave el offset correspondiente.
  5. Mapper: como dato de entrada tiene un registro clave-valor que procesará y generará una respuesta en forma de clave-valor.
  6. Combiner: agrupa los datos intermedios de la salida de los mapper de un nodo para enviar menos datos a través de la red a los reducers. Se podrá realizar siempre que la operación sea asociativa y conmutativa.
  7. Partitioner: agrupa las claves que son iguales para enviarlas a un Reducer. El número de partitioners debe de ser igual al número de reducers.
  8. Shuffle and sort: a través de http se obtienen todos los resultados para cada clave enviada por los mappers. Los registros con misma clave se agrupan y se ordenan para después mandarlos por grupos a los reducers. Solo se puede iniciar cuando todas las tareas Map han terminado.
  9. Reducer: agrega los resultados obtenidos de los diferentes mappers con la misma clave. Procesa la salida final que normalmente es un fichero HDFS. El número de tareas reduce es definida por el usuario. La salida tendrá tantos ficheros como reducers se hayan definido.
  10. Output Format: describe la especificación de salida.
  11. RecordWriter: escribe en hdfs el fichero con el resultado.
  12. Output Data: obtendremos tantos fichero de salida como reducers tengamos.

Cada tarea Map se ejecuta normalmente sobre un único bloque HDFS. Se crean tantas tareas map como bloques tengamos que procesar. Por lo general esta tarea Map se ejecuta sobre el nodo que almacena los datos.

Hadoop puede trabajar con un gran variedad de formatos de compresión. Cuando hay que procesar un fichero comprimido hadoop lo descomprime automaticamente y sirve el contenido.

Hay alguno formatos como Gzip que no son divisibles y tiene que ser descomprimido de principio a fin. No pueden descomprimirse partes de un fichero. Si se diera el caso de pasaría el fichero completo al mapper lo que puede desastibilizar la carga de los nodos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s