Actualizado: 19 de noviembre de 2024 
Colaboradores
: Jim Holdsworth, Matthew Kosinski

¿Qué es MapReduce?

MapReduce es un modelo de programación que utiliza el procesamiento paralelo para acelerar el proceso de datos a gran escala. MapReduce permite una escalabilidad masiva en cientos o miles de servidores dentro de un clúster Hadoop.

El nombre "MapReduce" hace referencia a las dos tareas que realiza el modelo para ayudar a "fragmentar" una gran tarea de proceso de datos en muchas tareas más pequeñas que pueden ejecutarse más rápido en paralelo.

  • La primera es la "tarea de mapas", que toma un conjunto de datos y los convierte en otro conjunto de datos formateados como pares clave/valor, como ciudades (claves) y altas temperaturas diarias (valores).

  • En segundo lugar está la "tarea de reducción", que toma las salidas de una tarea de mapa, agrega todos los valores con la misma clave y procesa los datos para producir un conjunto final de pares clave/valor.

El modelo de programación MapReduce es uno de los componentes centrales de procesamiento en el corazón de Apache Hadoop, un marco de software de código abierto respaldado por la Apache Software Foundation y construido sobre el lenguaje de programación Java.

El modelo MapReduce también se puede utilizar fuera de Hadoop.

Cómo funciona MapReduce

MapReduce ayuda a dividir los proyectos de proceso de datos en partes más pequeñas para que puedan ejecutarse más rápido.

El uso de un procesador para analizar un archivo enorme con terabytes o petabytes de datos puede llevar, por ejemplo, diez horas. Un trabajo de MapReduce puede dividir ese mismo archivo de datos en diez tareas que se ejecutan en paralelo en diez procesadores. Es posible que este trabajo solo tarde una hora o menos en ejecutarse. Los datos se pueden agregar desde los nodos informáticos distribuidos para producir un resultado.

Aunque el mapeo y la reducción son las funciones esenciales del modelo MapReduce, el proceso general incluye algunos pasos más.

Entrada

Una aplicación MapReduce acepta datos de entrada, que pueden incluir datos no estructurados o estructurados. Las aplicaciones MapReduce suelen funcionar con archivos de entrada almacenados en el sistema de archivos distribuido Hadoop (HDFS), pero el modelo también puede funcionar con otras fuentes de datos. (Para obtener más información, consulte "MapReduce dentro del ecosistema Hadoop".)

Para un trabajo específico, el marco MapReduce ayuda a seleccionar servidores distribuidos, gestionar las comunicaciones y las transferencias de datos y admitir la tolerancia a fallos y la redundancia.

División
 

Los datos de entrada se dividen en bloques más pequeños. Estos bloques se distribuyen a los mapeadores, las funciones que realizan el mapeo en el próximo paso, ubicados en varios nodos. El marco MapReduce tiene como objetivo una asignación de datos más o menos uniforme entre los mapeadores para un equilibrio de carga eficiente.

Mapeo
 

En cada nodo, la función de mapa procesa los datos que recibe, convirtiéndolos en pares clave/valor.

El número total de mapeadores se determina dentro del marco de Hadoop, en función del volumen total de datos y los bloques de memoria disponibles en cada mapeador. Los parámetros para los mapeadores, reductores y output se pueden establecer dentro del clúster Hadoop.

Baraja
 

El marco Hadoop ordena las salidas del mapa y asigna todos los pares clave/valor con la misma "clave" (tema) al mismo reductor. Por ejemplo, en un conjunto de datos de ciudades y sus altas temperaturas diarias, cualquier dato con la clave "Tokio" iría al mismo reductor.

El reductor, como su nombre indica, es la función que realiza el paso reduce.

Reducción
 

Las funciones de reducción procesan los pares clave/valor que emiten los mapeadores. Esto puede implicar fusionar, tabular o realizar otras operaciones en los datos, dependiendo del tipo de procesamiento requerido.

La asignación y la reducción se pueden realizar en el mismo conjunto de servidores, pero esto es opcional. 

Resultado
 

Cada reductor envía los resultados de su procesamiento al HDFS u otro almacén de datos.

Un ejemplo de MapReduce

Independientemente de la cantidad de datos que una organización quiera analizar, los principios clave siguen siendo los mismos.

Para este ejemplo, el conjunto de datos incluye ciudades (las claves) y las temperaturas diarias correspondientes (los valores) registradas para cada ciudad. Un ejemplo de par clave/valor podría tener este aspecto: <Toronto, 18>.

Los datos se distribuyen en varios archivos. Cada archivo puede incluir datos de una combinación de ciudades y puede incluir la misma ciudad varias veces.

A partir de este conjunto de datos, el usuario desea identificar la "temperatura máxima" de cada ciudad a lo largo del período de seguimiento.

Una implementación de MapReduce para manejar este trabajo podría tener este aspecto:

  1. Los archivos de datos que contienen información sobre la temperatura se introducen en la aplicación MapReduce como entrada.

  2. Los archivos se dividen en tareas de mapa, y cada tarea se asigna a uno de los mapeadores.

  3. Los mapeadores convierten los datos en pares clave/valor.

  4. Los resultados del mapa se barajan y ordenan para que todos los valores con la misma clave de ciudad terminen con el mismo reductor. Por ejemplo, todos los valores de temperatura de Toronto van a un reductor, mientras que otro reductor agrega todos los valores de Londres.

  5. Cada reductor procesa sus datos para determinar el valor de temperatura más alto para cada ciudad. A continuación, los datos se reducen al par clave/valor más alto de cada ciudad.

  6. Tras la fase de reducción, se pueden recopilar los valores más altos para obtener un resultado: < Tokio, 38 > < Londres, 27 > < Nueva York, 33 > < Toronto, 32 >.
MapReduce en el ecosistema de Hadoop

El ecosistema de Hadoop es un conjunto de módulos de código abierto diseñados para trabajar juntos y promover la eficiencia. Hay módulos que constituyen el marco principal de Hadoop, incluido MapReduce y tres más:

Sistema de archivos distribuido Hadoop (HDFS)
 

El HDFS es un sistema de archivos distribuido para almacenar los datos de las aplicaciones en hasta miles de servidores básicos.

HDFS está diseñado para proporcionar tolerancia a fallos para Hadoop y ofrecer un acceso rápido a los datos. De forma predeterminada, los bloques de datos se replican en varios nodos en el momento de la carga o la escritura.

La arquitectura HDFS incluye un NameNode para gestionar el espacio de nombres y el acceso a los archivos del sistema de archivos, junto con varios DataNodes para gestionar el almacenamiento de datos.

Yet Another Resource Negotiator (YARN)
 

Apache Hadoop de código abierto, YARN, es un marco para la programación de trabajos y la gestión de recursos de clúster. Admite múltiples cargas de trabajo, como consultas SQL, modelado avanzado y transmisión en tiempo real.

Hadoop Common
 

Este módulo es una colección de utilidades y bibliotecas de recursos que admiten otros módulos Hadoop. También conocido como Hadoop Core, incluye múltiples recursos para recuperación automática de fallos, abstracción a nivel de sistema de archivos y de sistema operativo, archivos y scripts Java Archive (JAR), y mucho más.

Otros módulos
 

Además del marco principal de Hadoop, el ecosistema de Hadoop también incluye:

  • HBase (una base de datos NoSQL no relacional)
  • Mahout y Spark MLlib (bibliotecas de algoritmos para machine learning)
  • Oozie (un programador de trabajos)
  • Apache Hive y Apache Pig (herramientas de procesamiento de datos basadas en consultas)
  • Solr y Lucene (para búsqueda e indexación)
  • Spark (motor de procesamiento de datos en memoria) 
  • Zookeeper (coordinación del grupo)
Beneficios de MapReduce

La programación de MapReduce ofrece varios beneficios que pueden ayudar a las organizaciones a obtener conocimientos valiosos a partir del análisis de big data, como:

  • Escalabilidad: MapReduce permite a las organizaciones procesar petabytes de datos almacenados en el HDFS en varios servidores o nodos.

  • Procesamiento más rápido: con el procesamiento paralelo y el movimiento mínimo de datos, MapReduce ofrece la optimización del procesamiento de big data para volúmenes masivos de datos.

  • Simplicidad: los desarrolladores pueden escribir aplicaciones de MapReduce en los lenguajes de programación que elijan, incluidos Java, C++ y Python.

  • Ahorro de costes: como programa de código abierto, MapReduce puede ahorrar a una organización algo de presupuesto en gastos de software. Dicho esto, seguirá habiendo costes asociados a la infraestructura y al personal de ingeniería de datos.
Casos de uso de MapReduce

MapReduce puede manejar de manera eficiente muchos casos de uso sencillos, aunque las tareas complejas de proceso de datos pueden ejecutarse más rápido en otras aplicaciones. Estas son algunas aplicaciones adecuadas para el enfoque de procesamiento paralelo de MapReduce:

  • Integración de datos, donde el marco MapReduce se utiliza para ejecutar el proceso de extracción, transformación y carga (ETL) para preparar los datos para su análisis y almacenamiento.

  • Procesamiento de imágenes, donde tareas como la clasificación de imágenes pueden dividirse en conjuntos de datos más pequeños y procesarse en paralelo.

  • Análisis de registros, como la identificación de tendencias mediante la revisión de archivos de registro de servidores web o de aplicaciones.

  • Machine learning (ML), donde MapReduce puede ayudar con tareas de entrenamiento de ML, como filtrado colaborativo, k-means clustering y regresión lineal.

  • Análisis de opiniones, en el que MapReduce puede ayudar a sumar las puntuaciones de los clientes en un sitio web o a identificar los grupos de respuestas, por ejemplo.

  • Tabulación, como contar cuántos clientes renovaron sus cuentas, por país, durante el año pasado.

  • Minería de texto, como trabajos de recuento de palabras que rastrean el número de veces que una palabra aparece en un determinado conjunto de entrada, como un tablón de comentarios.
Historia de MapReduce

El paradigma de programación MapReduce fue creado en 2004 por los informáticos de Google Jeffery Dean y Sanjay Ghemawat. El objetivo del modelo MapReduce es simplificar la transformación y el análisis de grandes conjuntos de datos mediante un procesamiento paralelo masivo en grandes clústeres de hardware básico. También permite a los programadores centrarse en los algoritmos en lugar de en la gestión de datos.

Aunque Google introdujo el primer marco MapReduce, Apache Hadoop MapReduce es quizás el más popular.

MapReduce desempeñó un papel clave en el avance del análisis de big data, pero tiene sus inconvenientes. Por ejemplo, MapReduce no suele retener los datos en la memoria y la lógica iterativa solo es posible encadenando las aplicaciones de MapReduce. Estos factores añaden una mayor complejidad y pueden alargar los tiempos de procesamiento.

Aunque MapReduce sigue siendo muy utilizado, especialmente en sistemas heredados, muchas organizaciones se están pasando a marcos más rápidos o especializados, como Apache Spark, para aplicaciones de big data.

Soluciones relacionadas
Software y soluciones de gestión de datos

Diseñe una estrategia de datos que elimine los silos, reduzca la complejidad y mejore la calidad de los datos para ofrecer experiencias excepcionales a clientes y empleados.

Explore las soluciones de gestión de datos
IBM watsonx.data

Watsonx.data le permite escalar la analítica y la IA con todos sus datos, residan donde residan, a través de un almacén de datos abierto, híbrido y gobernado.

Descubra watsonx.data
Servicios de asesoramiento sobre datos y análisis

Desbloquee el valor de los datos empresariales con IBM Consulting, y construya una organización impulsada por conocimientos que ofrezca ventajas empresariales.

Descubra los servicios de análisis
Dé el siguiente paso

Escale cargas de trabajo de IA, para todos sus datos, en cualquier lugar con IBM watsonx.data, un almacén de datos adaptado construido sobre una arquitectura de lakehouse de datos abierta.

Explore watsonx.data Solicite una demostración en directo