MapReduce - Introducción
MapReduce es un modelo de programación para escribir aplicaciones que pueden procesar Big Data en paralelo en múltiples nodos. MapReduce proporciona capacidades analíticas para analizar grandes volúmenes de datos complejos.
¿Qué es Big Data?
Big Data es una colección de grandes conjuntos de datos que no se pueden procesar mediante técnicas informáticas tradicionales. Por ejemplo, el volumen de datos que Facebook o Youtube necesitan para recopilar y administrar a diario, puede caer en la categoría de Big Data. Sin embargo, Big Data no solo se trata de escala y volumen, sino que también involucra uno o más de los siguientes aspectos: velocidad, variedad, volumen y complejidad.
¿Por qué MapReduce?
Los sistemas empresariales tradicionales normalmente tienen un servidor centralizado para almacenar y procesar datos. La siguiente ilustración muestra una vista esquemática de un sistema empresarial tradicional. El modelo tradicional ciertamente no es adecuado para procesar grandes volúmenes de datos escalables y no puede ser acomodado por servidores de bases de datos estándar. Además, el sistema centralizado crea demasiado cuello de botella al procesar varios archivos simultáneamente.
Google resolvió este problema de cuello de botella utilizando un algoritmo llamado MapReduce. MapReduce divide una tarea en partes pequeñas y las asigna a muchas computadoras. Posteriormente, los resultados se recopilan en un solo lugar y se integran para formar el conjunto de datos de resultados.
¿Cómo funciona MapReduce?
El algoritmo MapReduce contiene dos tareas importantes, a saber, Map y Reduce.
La tarea Mapa toma un conjunto de datos y lo convierte en otro conjunto de datos, donde los elementos individuales se dividen en tuplas (pares clave-valor).
La tarea Reducir toma la salida del mapa como entrada y combina esas tuplas de datos (pares clave-valor) en un conjunto más pequeño de tuplas.
La tarea de reducción siempre se realiza después del trabajo de mapa.
Echemos ahora un vistazo de cerca a cada una de las fases y tratemos de comprender su significado.
Input Phase - Aquí tenemos un lector de registros que traduce cada registro en un archivo de entrada y envía los datos analizados al asignador en forma de pares clave-valor.
Map - Map es una función definida por el usuario, que toma una serie de pares clave-valor y procesa cada uno de ellos para generar cero o más pares clave-valor.
Intermediate Keys - Los pares clave-valor generados por el mapeador se conocen como claves intermedias.
Combiner- Un combinador es un tipo de reductor local que agrupa datos similares de la fase del mapa en conjuntos identificables. Toma las claves intermedias del asignador como entrada y aplica un código definido por el usuario para agregar los valores en un pequeño alcance de un asignador. No es parte del algoritmo principal de MapReduce; es opcional.
Shuffle and Sort- La tarea Reductor comienza con el paso de Ordenar y Ordenar. Descarga los pares clave-valor agrupados en la máquina local, donde se ejecuta Reducer. Los pares clave-valor individuales se ordenan por clave en una lista de datos más grande. La lista de datos agrupa las claves equivalentes juntas para que sus valores se puedan iterar fácilmente en la tarea Reducer.
Reducer- El reductor toma los datos emparejados de valores clave agrupados como entrada y ejecuta una función de reductor en cada uno de ellos. Aquí, los datos se pueden agregar, filtrar y combinar de varias formas, y requiere una amplia gama de procesamiento. Una vez finalizada la ejecución, da cero o más pares clave-valor al paso final.
Output Phase - En la fase de salida, tenemos un formateador de salida que traduce los pares clave-valor finales de la función Reducer y los escribe en un archivo usando una grabadora.
Intentemos comprender las dos tareas Map & f Reduce con la ayuda de un pequeño diagrama:
MapReduce-Ejemplo
Tomemos un ejemplo del mundo real para comprender el poder de MapReduce. Twitter recibe alrededor de 500 millones de tweets por día, lo que equivale a casi 3000 tweets por segundo. La siguiente ilustración muestra cómo Tweeter administra sus tweets con la ayuda de MapReduce.
Como se muestra en la ilustración, el algoritmo MapReduce realiza las siguientes acciones:
Tokenize - Tokeniza los tweets en mapas de tokens y los escribe como pares clave-valor.
Filter - Filtra palabras no deseadas de los mapas de tokens y escribe los mapas filtrados como pares clave-valor.
Count - Genera un contador de tokens por palabra.
Aggregate Counters - Prepara un agregado de valores de contador similares en pequeñas unidades manejables.