Primeros pasos con mapreduce

Instalación o configuración

Mapreduce es parte de Hadoop. Entonces, cuando [Apache Hadoop] (https://www.wikiod.com/es/docs/hadoop) (o cualquier distribución de Hadoop está instalada), MR se instala automáticamente.

MapReduce es el marco de procesamiento de datos sobre HDFS (sistema de archivos distribuido Hadoop). Los trabajos de MR pueden escribirse usando Java, python, Scala, R, etc.

¿Qué hace mapreduce y cómo?

Mapreduce es un modelo de programación para procesar (muy) grandes cantidades de datos.

La ‘HPC’ (computación de alto rendimiento) tradicional acelera los cálculos grandes en cantidades relativamente grandes de datos mediante la creación de un conjunto de computadoras altamente conectadas (usando cosas como redes extremadamente rápidas y acceso rápido a almacenamiento compartido, memoria compartida) para manejar problemas informáticos que por lo general requieren cálculos para tener acceso a los datos de los demás. Un ejemplo clásico es el pronóstico del tiempo.

Mapreduce, por otro lado, sobresale en el manejo de cálculos relativamente pequeños e independientes en enormes cantidades de datos. Para que esto sea posible, los datos se distribuyen entre muchas computadoras (debido a la cantidad de datos) y el cálculo deseado se divide en una fase que se puede realizar en cada bit de datos de forma independiente (la fase de “mapa”). Luego se recopilan los resultados de estos cálculos independientes y se realiza una segunda parte de los cálculos para combinar todos estos resultados individuales en el resultado final (la fase de “reducción”).


Ejemplo: contar votos

Imagine que tiene una gran cantidad de votos para contar, y hay un poco de trabajo para contar cada voto (por ejemplo, descubrir a partir de la imagen escaneada qué casilla se marcó).

En este caso, una implementación de mapreduce:

Paso 1: ‘Difundir’

Distribuya las imágenes para procesar en las computadoras disponibles.

Paso 2: ‘Mapa’

En cada computadora, para cada imagen:

  • tomar 1 de las imágenes copiadas a esta computadora como entrada
  • averiguar qué casilla estaba marcada
  • mostrar el número (o código o nombre) del artículo votado

Tenga en cuenta que el trabajo puede comenzar tan pronto como una computadora obtenga 1 imagen para trabajar en. No hay necesidad de que todas estas computadoras interactúen para hacer su trabajo, por lo que no es necesario que estén interconectados rápidamente, hayan compartido memoria o espacio en disco compartido.

Paso 3: ‘Reunir’

Reúna todas estas salidas en 1 computadora.

Paso 4: ‘Reducir’

Cuente cuántos votos hay para cada número (o código o nombre).

Este ejemplo muy básico también destaca cómo a menudo son posibles más optimizaciones. En este caso, el paso de reducción en sí se puede hacer parcialmente en cada computadora, y luego se puede hacer una reducción final en una computadora central. Esto reducirá la cantidad de trabajo en la computadora que ejecuta el paso de reducción y limitará la cantidad de datos que deben transportarse a través de la red.


Ejemplo: conteo de votos - optimizado (usando el combinador)

Paso 1: ‘Difundir’

Igual que antes: distribuya las imágenes para procesar en las computadoras disponibles.

Paso 2: ‘Mapa’

Igual que antes: En cada computadora, para cada imagen:

  • tomar 1 de las imágenes copiadas a esta computadora como entrada
  • averiguar qué casilla estaba marcada
  • mostrar el número (o código o nombre) del artículo votado

Paso 3: ‘Reunir’ localmente

Reúna todas las salidas de 1 computadora en la computadora misma.

Paso 4: ‘Reducir’ localmente

Cuente cuántos votos de cada número (o código o nombre) hay en los resultados locales y genere estos recuentos.

Paso 5: ‘Reunir’ globalmente

Reúna todas las salidas del local reduce en 1 computadora.

Paso 6: ‘Reducir’ globalmente

Sumar los recuentos de votos realizados localmente de cada número (o código o nombre).


Tenga en cuenta que en el paso 3 no es necesario esperar todos los resultados en cualquiera de los siguientes casos:

  • si esto se vuelve demasiado para los recursos locales de las computadoras como almacenamiento/memoria
  • si el costo del trabajo que se debe rehacer cuando una computadora se descompone se considera demasiado grande para esperar todos los resultados locales
  • si la red ahora es libre de transportar resultados intermedios

la recopilación local y la reducción local se pueden hacer sobre los resultados producidos hasta ahora en la computadora local, y esto se puede hacer en cualquier momento.

El paso de reducción local se denomina paso combinador. Este es un paso opcional que se utiliza para mejorar el rendimiento.