Una guía introductoria para MapReduce en Big Data

toadmin. ru.

MapReduce ofrece una forma eficiente, rápida y rentable de construir aplicaciones.

Este modelo utiliza conceptos avanzados como procesamiento paralelo, localidad de datos, etc., que proporciona muchos beneficios a los programadores y organizaciones.

Pero hay tantos modelos y marcos de programación en el mercado que se vuelve difícil elegir.

Y cuando se trata de Big Data, no puede elegir algo. Debe elegir tecnologías que puedan manejar grandes bloques de datos.

MapReduce es una gran solución para esto.

En este artículo, explicaré qué es MapReduce y cómo puede ser útil.

¿Qué es MapReduce?

MapReduce es un modelo de programación o entorno de programación en el entorno Apache Hadoop. Se utiliza para crear aplicaciones que puedan procesar grandes cantidades de datos en paralelo en miles de nodos (llamados grupos o cuadrículas) con tolerancia y confiabilidad de fallas.

Este procesamiento de datos se lleva a cabo en la base de datos o el sistema de archivos donde se almacenan los datos. MapReduce puede funcionar con el sistema de archivos Hadoop (HDFS) para acceder y administrar grandes cantidades de datos.

Este marco fue introducido en 2004 por Google y popularizado por Apache Hadoop. Es una capa o motor de procesamiento en Hadoop que ejecuta programas MapReduce desarrollados en diferentes idiomas, incluidos Java, C ++, Python y Ruby.

Los programas MapReduce en la computación en la nube se ejecutan en paralelo, por lo que son adecuados para el análisis de datos a gran escala.

MapReduce tiene como objetivo dividir una tarea en tareas más pequeñas y múltiples que usan MAP y reducen las funciones. Mapeará cada tarea y luego la reducirá a varias tareas equivalentes, lo que resulta en menos potencia computacional y sobrecarga en la red de clúster.

Ejemplo: suponga que está cocinando una comida para una casa llena de invitados. Entonces, si intenta preparar todos los platos y hacer todos los procesos usted mismo, se volverá agitado y lento.

Pero suponga que se alistan a algunos de sus amigos o compañeros de trabajo (no a los invitados) para ayudarlo a preparar la comida, asignando los diversos procesos a otra persona que puede hacer las tareas al mismo tiempo. En este caso, preparará la comida mucho más rápido y más fácil mientras sus invitados todavía están en la casa.

MapReduce funciona de manera similar con las tareas distribuidas y el procesamiento paralelo para proporcionar una forma más rápida y más fácil de realizar esta tarea.

Apache Hadoop permite a los programadores usar MapReduce para ejecutar modelos en grandes conjuntos de datos distribuidos y usar el aprendizaje automático avanzado y las técnicas estadísticas para encontrar patrones, hacer predicciones, descubrir correlaciones y más.

Características de MapReduce

Algunas de las características clave de MapReduce son:

  • Interfaz de usuario: obtendrá una interfaz de usuario intuitiva que proporciona información razonable sobre cada aspecto del marco. Esto lo ayudará a configurar, aplicar y personalizar tareas fácilmente.
  • Carga útil: aplicaciones Utilice las interfaces mapeador y reductores para habilitar el mapa y reducir las funciones. Mapas de mapas de entrada pares de valor clave para pares de valores clave intermedios. El reductor se usa para reducir los pares de valor clave intermedio que comparten una clave para otros valores más pequeños. Realiza tres funciones: ordenar, mezclar y reducir.
  • Separador: controla la separación de las teclas de salida del mapa intermedio.
  • Reportero: es una función que le permite informar el progreso, actualizar contadores y establecer mensajes de estado.
  • Contadores: representa contadores globales definidos por la aplicación MapReduce.
  • OutputCollector: esta función recopila datos de salida del mapeador o reductor en lugar de datos de salida intermedios.
  • Recordwriter: escribe datos de salida o pares de valor clave en un archivo de salida.
  • DistributedCache: distribuye eficientemente archivos grandes de solo lectura relacionados con una aplicación específica.
  • Compresión de datos: el autor de la aplicación puede comprimir los datos de salida del mapa de trabajo y la salida intermedia.
  • Omita los registros malos: puede omitir algunos registros malos al procesar los datos de entrada del mapa. Esta característica se puede controlar a través de la clase SkipBadRecords.
  • Depuración: obtendrá la capacidad de ejecutar scripts personalizados y habilitar la depuración. Si falla una tarea en MapReduce, puede ejecutar un script de depuración y encontrar los problemas.

Arquitectura de MapReduce

Comprendamos la arquitectura de MapReduce profundizando en sus componentes:

  • Tarea: una tarea en MapReduce es la tarea real que un cliente MapReduce quiere lograr. Consiste en varias tareas más pequeñas que se combinan para formar la tarea final.
  • Servidor de historial de trabajo: este es un demonio de proceso para almacenar y retener todos los datos históricos sobre una aplicación o trabajo, como registros creados después o antes de que se ejecute un trabajo.
  • Cliente: un cliente (programa o API) pasa un trabajo a MapReduce para la ejecución o procesamiento. En MapReduce, uno o más clientes pueden enviar continuamente trabajos al Gerente de MapReduce para su procesamiento.
  • MapReduce Master: un maestro de MapReduce divide un trabajo en varias partes más pequeñas, asegurando que las tareas se puedan ejecutar simultáneamente.
  • Partes de trabajo: se obtienen trabajos adicionales o piezas de trabajo dividiendo el trabajo principal. Se procesan y finalmente se combinan para crear la tarea final.
  • Datos de entrada: este es el conjunto de datos que se pasa a MapReduce para procesar la tarea.
  • Datos de salida: este es el resultado final producido después de procesar la tarea.

Entonces, lo que realmente sucede en esta arquitectura es que el cliente envía la tarea al Asistente MapReduce, que la divide en partes iguales más pequeñas. Esto permite que el trabajo se complete más rápido, ya que las tareas más pequeñas tardan menos en procesarse que las tareas más grandes.

Sin embargo, asegúrese de que las tareas no se dividan en tareas que son demasiado pequeñas, porque si lo hace, es posible que tenga que incurrir en muchas sobrecargas para administrar la división y pasar un tiempo considerable haciéndolo.

Las partes del trabajo luego están disponibles para mapas y reducen las tareas. Además, las tareas MAP y Reduce tienen un programa adecuado basado en el caso de uso en el que el equipo está trabajando. El programador desarrolla el código lógico para cumplir con los requisitos.

Los datos de entrada se pasan a la tarea MAP para que MAP pueda generar rápidamente los datos de salida en forma de un par de valor clave. En lugar de almacenar estos datos en HDFS, se utiliza un disco local para almacenar los datos para eliminar la posibilidad de replicación.

Una vez que se completa la tarea, puede descartar la salida. Por lo tanto, la replicación se vuelve innecesaria si almacena los datos de salida en HDFS. La salida de cada tarea del mapa se dará a la tarea Reducir, y la salida del mapa se administrará a la máquina que ejecuta la tarea Reducir.

Los datos de salida se fusionarán y se administrarán a la función de reducción definida por el usuario. Finalmente, la salida reducida se almacenará en HDFS.

Además, el proceso puede tener múltiples mapas y reducir las tareas para procesar los datos según el objetivo final. Los algoritmos de mapa y reducción están optimizados para minimizar el tiempo o la complejidad del espacio.

Dado que MapReduce involucra principalmente mapas y reduce las tareas, es pertinente aprender más sobre ellas. Entonces, discutamos las etapas de MapReduce para tener una idea clara sobre estos temas.

Etapas de mapreduce

Mapa

En esta etapa, los datos de entrada se asignan a datos de salida o pares de valor clave. Aquí, la clave puede referirse a un identificador de dirección y el valor puede ser el valor real de esa dirección.

Solo hay una pero dos tareas en esta etapa, divisiones y mapeo. Las divisiones se refieren a subpartes o partes de una tarea que se separan de la tarea principal. También se llaman divisiones de entrada. Por lo tanto, una división de entrada puede llamarse un fragmento de entrada consumido por el mapa.

A continuación, se realiza la tarea coincidente. Esta se considera como la primera fase para ejecutar el programa de reducción de mapas. Aquí, los datos contenidos en cada partición se pasarán a la función de mapeo para procesar y crear los datos de salida.

La función-MAP () se ejecuta en el repositorio de memoria para pares de valores clave de entrada, creando un par de valores clave intermedio. Este nuevo par de valores clave servirá como entrada a la función Rede () o reductor.

Reducir

Los pares de valor clave intermedio obtenidos en el paso de coincidencia funcionan como entrada a la función de reducir o reductor. Como en el paso coincidente, hay dos tareas involucradas aquí: mezclar y reducir.

Por lo tanto, los pares de valor clave recibidos se clasifican y se barajan para pasar al reductor. El reductor luego agrupa o agrega los datos de acuerdo con el par de valores clave basado en el algoritmo reductor escrito por el desarrollador.

Aquí los valores de la fase de barajamiento se combinan para devolver el valor de salida. Esta fase resume todo el conjunto de datos.

Ahora, todo el proceso de mapa y reduce las tareas está controlado por algunas entidades. Estos son:

  • Tracker de trabajo: En pocas palabras, el rastreador de trabajo actúa como un maestro responsable de la ejecución completa del trabajo enviado. El rastreador de trabajo administra todos los trabajos y recursos en el clúster. Además, el rastreador de trabajo programa cada tarjeta agregada al rastreador de tareas que se ejecuta en un nodo de datos particular.
  • Múltiples rastreadores de tareas: simplemente, los rastreadores de tareas múltiples funcionan como esclavos, ejecutando una tarea de acuerdo con las instrucciones del rastreador de tareas. El rastreador de tareas se implementa en cada nodo por separado en un mapa de ejecución de clúster y reduce las tareas.

Esto funciona porque el trabajo se dividirá en múltiples tareas que se ejecutarán en diferentes nodos de datos desde el clúster. El rastreador de trabajo es responsable de coordinar la tarea programando las tareas y ejecutarlas en múltiples nodos de datos. El rastreador de tareas que se encuentra en cada nodo de datos ejecuta las partes de la tarea y realiza un seguimiento de cada tarea.

Además, el rastreador de tareas envía informes de progreso al rastreador de tareas. Además, el rastreador de tareas envía periódicamente una señal «Heartbeat» al rastreador de trabajo y los notifica del estado del sistema. En el caso de cualquier falla, el rastreador de trabajo puede transferir la tarea a otro rastreador de tareas.

Fase de salida: cuando llegue a esta fase, tendrá los pares finales de valor clave generados a partir del reductor. Puede usar la herramienta de formato de salida para convertir los pares de valor clave y escribirlos en un archivo utilizando la herramienta de escritura.

¿Por qué usar MapReduce?

Estos son algunos de los beneficios de MapReduce, explicando las razones por las que debe usarlo en sus aplicaciones de Big Data:

Procesamiento en paralelo

Puede dividir una tarea en diferentes nodos, donde cada nodo procesa una parte de esa tarea en MapReduce al mismo tiempo. Por lo tanto, dividir grandes tareas en tareas más pequeñas reduce la complejidad. Además, debido a que las diferentes tareas se ejecutan en paralelo en diferentes máquinas en lugar de en una sola máquina, el procesamiento lleva mucho menos tiempo.

Ubicación de datos

En MapReduce, puede mover la unidad de procesamiento de datos en lugar de al revés.

De manera tradicional, los datos se llevaron a la unidad de procesamiento para su procesamiento. Sin embargo, con el rápido crecimiento de los datos, este proceso comenzó a plantear muchos desafíos. Algunos de ellos fueron más costosos, tomando más tiempo, tensar el nodo maestro, las fallas frecuentes y el rendimiento de la red degradante.

Pero MapReduce ayuda a resolver estos problemas siguiendo el enfoque inverso de mover la CPU a los datos. Por lo tanto, los datos se distribuyen entre diferentes nodos donde cada nodo puede procesar una parte de los datos almacenados.

Como resultado, proporciona una eficiencia de costo y reduce el tiempo de procesamiento porque cada nodo funciona en paralelo con su parte respectiva de los datos. Además, dado que cada nodo procesa una parte de estos datos, no se sobrecargará ningún nodo.

Seguridad

El modelo MapReduce proporciona un mayor nivel de seguridad. Esto ayuda a proteger su aplicación de datos no autorizados al tiempo que mejora la seguridad del clúster.

Escalabilidad y flexibilidad

MapReduce es un marco altamente escalable. Le permite ejecutar aplicaciones de múltiples máquinas utilizando miles de terabytes de datos. También ofrece la flexibilidad para manejar datos que se pueden estructurar, semiestructurados o no estructurados, y de cualquier formato y tamaño.

Sencillez

Puede escribir programas MapReduce en cualquier lenguaje de programación como Java, R, Perl, Python y otros. Por lo tanto, cualquiera puede aprender y escribir programas fácilmente al tiempo que garantiza que se cumplan sus requisitos de procesamiento de datos.

Opciones de uso de MapReduce

  • Indexación de texto completo: MapReduce se usa para realizar la indexación de texto completo. Su mapeador puede mapear cada palabra o frase en un solo documento. Y el reductor se usa para registrar todos los elementos asignados en el índice.
  • Cálculo de PageRank: Google usa MapReduce para calcular PageRank.
  • Análisis de registro: MapReduce puede analizar archivos de registro. Puede dividir un archivo de registro grande en diferentes partes o dividirse mientras el mapper busca páginas web disponibles.

Se pasará un par de valor clave al reductor si se encuentra una página web en el registro. Aquí, la página web será la clave y el índice «1» será el valor. Después de dar el par de valor clave al reductor, las diferentes páginas web se agregarán. El resultado final es el número total de visitas a cada página web.

  • Gráfico de enlaces web inverso: esta estructura también encuentra la aplicación en el gráfico de enlaces web inverso. Aquí MAP () devuelve la URL y la fuente de destino y obtiene los datos de la fuente o página web.

Luego reduzca () fusiona la lista de todas las URL de origen asociadas con las URL objetivo. Finalmente, genera las fuentes y el objetivo.

  • Recuento de palabras: MapReduce se usa para contar cuántas veces aparece una palabra en un documento determinado.
  • Calentamiento global: las organizaciones, los gobiernos y las empresas pueden usar MapReduce para abordar el calentamiento global.

Por ejemplo, es posible que desee aprender sobre el aumento de las temperaturas del océano debido al calentamiento global. Para hacer esto, puede recopilar miles de datos de todo el mundo. Los datos podrían ser de alta temperatura, baja temperatura, latitud, longitud, fecha, hora, etc. Esto requeriría múltiples mapas y reduciría el número de tareas para calcular la salida usando MapReduce.

  • Ensayos de drogas. Tradicionalmente, los científicos y los matemáticos han trabajado juntos para formular un nuevo medicamento que puede combatir una enfermedad. Con la proliferación de algoritmos y MapReduce, los departamentos de TI en las organizaciones pueden resolver fácilmente problemas que solo las supercomputadoras, Ph. D. científicos, etc. podrían manejar. Ahora puede probar la efectividad de un medicamento para un grupo de pacientes.
  • Otras aplicaciones: MapReduce puede manejar incluso datos a gran escala que de otro modo no caben en una base de datos relacional. También utiliza herramientas de ciencia de datos y le permite ejecutarlas en diferentes conjuntos de datos distribuidos, que anteriormente solo era posible en una sola computadora.

Debido a su confiabilidad y simplicidad, MapReduce encuentra aplicaciones en el ejército, los negocios, la ciencia y más.

Conclusión

MapReduce puede ser un gran avance en la tecnología. No solo es un proceso más rápido y más fácil, sino que también es rentable y menos intensivo en el trabajo. Dados sus beneficios y su uso creciente, es probable que sea testigo de una adopción más amplia entre industrias y organizaciones.

También puede explorar algunos de los mejores recursos para aprender sobre Big Data y Hadoop.