El modelo de programación llamado MapReduce, fue utilizado inicialmente por Google para analizar los resultados de sus búsquedas. Por ello, ganó una gran popularidad debido a su capacidad para dividir y procesar terabytes de datos en paralelo, logrando resultados más rápidos.
Primero lo primero: ¿Qué es MapReduce?
MapReduce es un modelo o patrón de programación dentro del entorno de trabajo de Hadoop. Este modelo se utiliza para acceder al Big Data, el cual se almacena en el Sistema de Archivos Distribuidos de Hadoop, llamado también HDFS. Por ello, es un componente integral para el funcionamiento de este marco.
Así, este modelo facilita el procesamiento de los datos, dividiendo los petabytes en porciones más pequeñas y procesándolas en paralelo. Todo ello en los servidores de Hadoop. Al final, añade todos los datos de diversos servidores para devolver un resultado consolidado a la aplicación.
Para ponerte un ejemplo, un clúster Hadoop con 20 mil servidores de bajo coste y un bloque de datos de 256 MB en cada uno, puede procesar alrededor de 5 TB de datos simultáneamente. Esta acción reduce el tiempo de procesamiento de datos, en comparación con el procesamiento secuencial de un conjunto de datos de masivas dimensiones.
Del mismo modo, en lugar de enviar los datos al lugar donde está instalada la aplicación o la lógica, dicha lógica se ejecuta en el servidor donde ya están almacenados los datos para acelerar el procesamiento.
Es por ello que el acceso y el almacenamiento de los datos se basan en el disco: la entrada se almacena en forma de archivos que contienen datos estructurados, semiestructurados o no estructurados. Por otra parte, la salida también se almacena en archivos.
De igual manera, MapReduce fue hace algún tiempo el único método a través del cual se podían recuperar los datos almacenados en el Sistema de Archivos Distribuidos de Hadoop. La cosa ha cambiado.
Cambios en las estructuras y funcionamiento de MapReduce
Al día de hoy, existen otros sistemas basados en consultas como Hive y Pig. Los cuales se usan para recuperar datos del Sistema de Archivos Distribuidos de Hadoop, mediante sentencias de tipo SQL. No obstante, estos suelen ejecutarse junto con tareas que se escriben utilizando el modelo de MapReduce. Esto se debe a que este modelo de programación tiene ventajas críticas.
¿Cuál es el funcionamiento de MapReduce?
Para empezar, en el núcleo de MapReduce existen dos funciones separadas: Map y Reduce. Estas funciones están secuenciadas una tras otra, con el objetivo de obtener resultados consistentes. De tal manera que la función “Map” toma la entrada del disco como pares, los procesa y produce otro conjunto de pares intermedios, como una clave y un valor para la salida.
Asimismo, la función “Reduce” toma las entradas como pares; clave, valor y produce pares del mismo valor de entrada, como una salida lógica. Los tipos de claves y valores difieren en función del caso de uso que se les otorga. Por ello, todas las entradas y salidas se almacenan en el Sistema de Archivos de Hadoop. Mientras que el Map es un paso obligatorio para filtrar y ordenar los datos iniciales, la función de Reduce es opcional.
De este modo, los llamados “Mappers” y “Reducers” son los servidores Hadoop que ejecutan las funciones Map y Reduce respectivamente y por separado. De tal manera que no importa si son los mismos o diferentes servidores.
Función Map
En primer lugar, los datos de entrada se dividen en bloques más pequeños. Así, cada bloque se asigna a un “mapeador” (Mapper) para su procesamiento. Es así como, por ejemplo, si un archivo tiene 200 registros para procesar, 200 mapeadores pueden ejecutarse juntos para procesar un registro cada uno. Tal vez, 50 mapeadores pueden funcionar juntos para procesar dos registros cada uno.
Por ello, el marco de trabajo de Hadoop decide cuántos mapeadores utilizar, basándose en el tamaño de los datos que se deben procesar y el bloque de memoria disponible en cada servidor de mapeadores.
Función Reduce
Ahora bien, una vez que todos los mapeadores completan el procesamiento, el marco de trabajo mezcla y ordena los resultados antes de pasarlos a los “reductores” (Reducers). Una regla existente es que un reductor no puede iniciarse mientras un mapeador está todavía en curso. De esta manera, todos los valores de salida del mapeador que tienen la misma clave se asignan a un solo reductor, que luego agrega los valores para dicha clave.
Otros pasos: combinar y dividir
En este sentido, existen 2 pasos intermedios entre Map y Reduce. La función Combinar es un proceso opcional. De tal modo que el combinador (Combiner) es un reductor que se ejecuta individualmente en cada servidor de mapeo. De esta forma, comprime los datos de cada mapeador a una forma simplificada antes de pasarlos al siguiente nivel.
Esto hace que la mezcla y ordenación sean más sencillas, ya que hay menos datos con los que trabajar. A menudo, la clase combinador se establece en la propia clase reducer, esto debido a las funciones acumulativas y asociativas de la función reduce. No obstante, si es necesario, el combiner puede ser una clase separada si se da el caso.
Ahora bien, la partición es el proceso que traduce los pares clave y valor resultantes de los mapeadores a otro conjunto de pares clave y valor para alimentar al reductor. De esta manera, se decide cómo deben presentarse los datos al reductor y también los asigna a un reductor concreto.
La partición por defecto determina el valor hash de la clave que resulta del mapeador. Además, asigna una partición basada en este valor hash. Hay tantas particiones como reductores. Por esta razón, una vez que la partición está completa, los datos de cada partición se envían a un reductor específico.
Ventajas del modelo MapReduce
De esta manera, la programación en MapReduce ofrece varias ventajas que te van a ayudar enormemente a obtener información valiosa del análisis de Big Data de tu organización o tu empresa.
- Escalabilidad; las organizaciones pueden procesar petabytes de datos almacenados en el Sistema de Archivos Distribuidos de Hadoop (HDFS).
- Flexibilidad; el entorno de Hadoop facilita el acceso a múltiples fuentes de datos y a diversos tipos de datos.
- Velocidad; con el procesamiento en paralelo y el mínimo movimiento de datos, este modelo ofrece un rápido procesamiento de cantidades masivas de datos.
- Facilidad; los desarrolladores pueden escribir el código en varios lenguajes, como Java, C++ y Python.
¿Cómo es la arquitectura de MapReduce?
En primer lugar, la arquitectura de MapReduce consta de varios componentes, los cuales funcionan de manera independiente, pero que juntos trabajan para mejorar el procesamiento de los datos propiamente dichos.
- Trabajo; es el trabajo real que necesita ser ejecutado o procesado.
- Tarea; es una parte del trabajo real que necesita ser ejecutada o procesada. Un trabajo de MapReduce comprende diversas pequeñas tareas que necesitan ser ejecutadas.
- Rastreador de Trabajo o Job Tracker; este rastreador juega el papel de programar trabajos y rastrear todos los que están asignados al rastreador de tareas.
- Rastreador de tareas; dicho rastreador desempeña el papel de rastrear las tareas e informar del estado de las mismas al rastreador de trabajos.
- Datos de entrada; son los datos utilizados para procesar en la fase de mapeo.
- Datos de salida; es el resultado del trabajo del mapeo (map) y la reducción (reduce).
- Cliente; a menudo, es un programa o interfaz de programación de aplicaciones (API) que envía trabajos a MapReduce. Este modelo puede aceptar trabajos de múltiples clientes.
- Hadoop MapReduce Master; el cual tiene la función de separar los trabajos en job-parts.
- Job-parts; Son sub-trabajos que resultan de la división del trabajo principal.
En la arquitectura de MapReduce, los clientes envían los trabajos al MapReduce Master. Este master subdividirá el trabajo en partes iguales. Ahora, las partes del trabajo se usarán para las 2 tareas principales de MapReduce: mapeo y reducción.
De esta manera, el desarrollador escribirá la lógica que va a satisfacer los requisitos de la empresa. Así, los datos de entrada serán divididos y mapeados. A su vez, los datos intermedios se ordenarán y fusionarán. Por último, el reductor que generará una salida final almacenada en el Sistema de Archivos Distribuidos de Hadoop, procesará la salida resultante.
¿Cómo funcionan los rastreadores de trabajos y tareas?
Cada trabajo consta de 2 componentes principales: el primero de ellos es la tarea de mapeo y el segundo, la tarea de reducción. Por una parte, la tarea de mapeo tiene el rol de dividir los trabajos en partes de trabajo y mapear los datos intermedios. Este sentido, la tarea de reducción hace el papel de mezclar y reducir los datos intermedios en unidades más pequeñas.
Del mismo modo, el rastreador de trabajos actúa como master. Es decir, se asegura de que se ejecuten todos los trabajos. Igualmente, el rastreador de trabajos programa los que han sido enviados por los clientes. A su vez, asignará los trabajos a los rastreadores de tareas. Así, cada rastreador de tareas consta de una tarea de mapa y una tarea de reducción. Los rastreadores de tareas informan del estado de cada trabajo asignado al rastreador de trabajos.
¿Cuáles son las etapas de MapReduce?
El modelo de programación MapReduce se ejecuta en tres etapas principales: mapeo, barajado y reducción. Igualmente, hay una etapa opcional, conocida como fase de combinación.
Fase de mapeo
Se trata de la primera etapa del modelo de programación y consiste de 2 pasos: dividir y mapear. Por ello, un conjunto de datos se divide en unidades iguales llamadas trozos. Los cuales son divisiones de entrada en el paso de división. El entorno Hadoop consta de un RecordReader que utiliza su propio formato de texto de entrada para transformar las divisiones de entrada en pares clave y valor.
Ahora, los pares clave y valor se utilizan como entradas en el paso de mapeo. Este es el único formato de datos que un mapeador puede leer o entender. Así, el paso de mapeo contiene una lógica de codificación que se aplica a estos bloques de datos. En este curso, el mapeador procesa los pares clave y valor, para producir una salida de la misma forma. Es decir, producir un conjunto de pares clave y valor.
Etapa de barajado
Esta es la segunda etapa que tiene lugar después de que la etapa de mapeo termina. También, consta de 2 pasos principales: clasificación y fusión. En la fase de ordenación, los pares clave y valor se ordenan utilizando las mismas claves. En este sentido, la fusión garantiza la combinación de los pares clave y valor.
Del mismo modo, la etapa de barajado facilita la eliminación de valores duplicados y la agrupación de valores. A su vez, los valores diferentes con claves similares se agrupan en el mismo lugar, por así decirlo. El resultado de esta etapa serán claves y valores por separado, al igual que en la fase de mapeo.
Fase de reducción
En la etapa de reducción o reduce, la salida de la etapa anterior (barajado) se utiliza como entrada. De esta manera, el reductor procesa esta entrada para reducir los valores intermedios a valores más pequeños. De hecho, suministra una síntesis de toda la agrupación de datos y el resultado de esta etapa se almacena en el Sistema de Archivos Distribuidos de Hadoop.
Etapa de combinación
Esta es una etapa opcional que se utiliza para optimizar el proceso de MapReduce. Dicha etapa se usa para reducir las salidas a nivel de nodo. En esta etapa, las salidas duplicadas del mapa pueden combinarse en una sola. De esta manera, La etapa de combinación aumenta la velocidad en la etapa de barajado. En función de la mejora del rendimiento de los trabajos.
¿Qué aplicaciones hay de MapReduce en la actualidad?
Tal vez no hayas oído hablar de MapReduce, pero lo cierto es que ya ha estado en los entornos de Big Data desde hace algún tiempo, aplicándose a diversos campos de la tecnología y de la toma de decisiones empresariales, como su principal objetivo.
MapReduce en el e-Commerce
Empresas de e-Commerce como Walmart, E-Bay y Amazon utilizan MapReduce para analizar el comportamiento de las compras. Este modelo proporciona información relevante que se utiliza como base para hacer recomendaciones de productos. Parte de la información incluye registros del sitio, catálogos de e-Commerce, historial de compras y registros de interacción.
La herramienta de programación MapReduce puede valorar información concerniente a plataformas de redes sociales como Facebook, Twitter y LinkedIn. Además, evalúa información importante como a quién le ha gustado tu estado y quién ha visto tu perfil.
Contenido de streaming
EL gigante del streaming Netflix utiliza MapReduce para analizar los clics y registros de los clientes online. Esta información ayuda a la empresa a sugerir películas basadas en los intereses y el comportamiento de los clientes. ¿Quieres saber todo acerca de las herramientas que se utilizan para procesar datos? Con el Máster en Big Data y Business Analytics, podrás crear proyectos utilizando dichas herramientas y así mejorar la rentabilidad de tu negocio.