Actualizado: 19 de noviembre de 2024
Colaboradores: Jim Holdsworth, Matthew Kosinski
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.
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.
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.
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.
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.
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.
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.
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.
Cada reductor envía los resultados de su procesamiento al HDFS u otro almacén de datos.
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:
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:
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.
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.
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.
Además del marco principal de Hadoop, el ecosistema de Hadoop también incluye:
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:
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:
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.
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.
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.
Desbloquee el valor de los datos empresariales con IBM Consulting, y construya una organización impulsada por conocimientos que ofrezca ventajas empresariales.