¿Para qué sirve MapReduce?

MapReduce es la capa de procesamiento de Hadoop . MapReduce es un modelo de programación diseñado para procesar grandes volúmenes de datos en paralelo al dividir el trabajo en un conjunto de tareas independientes. Solo necesita poner la lógica de negocios en la forma en que MapReduce funciona y el resto se ocupará del marco. El trabajo (trabajo completo) que el usuario envía al maestro se divide en pequeños trabajos (tareas) y se asigna a los esclavos.

Los programas de MapReduce están escritos en un estilo particular influenciado por construcciones de programación funcional, modismos específicos para procesar listas de datos. Aquí, en map reduce, obtenemos la entrada como una lista y la convierte en salida, que nuevamente es una lista. Es el corazón de Hadoop. Hadoop es mucho más potente y eficiente debido a la reducción de mapas, ya que aquí se realiza el procesamiento paralelo.

Terminologías de MapReduce

Comprender diferentes terminologías y conceptos de MapReduce, qué es Map, qué es reducir, qué es un trabajo, tarea, intento de tarea, etc.

Map-Reduce es el componente de procesamiento de datos de Hadoop. Conceptualmente, los programas Map-Reduce transforman listas de elementos de datos de entrada en listas de elementos de datos de salida. Un programa Map-Reduce hará esto dos veces, usando dos expresiones idiomáticas diferentes de procesamiento de listas

  • Mapa
  • Reducir

Entre Map y Reduce, hay una pequeña fase llamada Shuffle and Sort.

Comprendamos las terminologías básicas utilizadas en Map Reduce.

Trabajo : un “programa completo”: una ejecución de un asignador y un reductor en un conjunto de datos. Es una ejecución de 2 capas de procesamiento, es decir, mapeador y reductor.

Un trabajo de MapReduce es un trabajo que el cliente desea realizar. Consiste en los datos de entrada, el programa MapReduce y la información de configuración. Por lo tanto, el cliente debe enviar datos de entrada, debe escribir el programa Map Reduce y establecer la información de configuración (estos se proporcionaron durante la configuración de Hadoop en el archivo de configuración y también especificamos algunas configuraciones en nuestro programa que serán específicas para nuestro trabajo de map reduce )

Tarea : una ejecución de un asignador o un reductor en una porción de datos. También se llama Tarea en progreso (TIP). Significa que el procesamiento de datos está en progreso, ya sea en mapper o reductor.

Intento de tarea : una instancia particular de un intento de ejecutar una tarea en un nodo. Existe la posibilidad de que en cualquier momento cualquier máquina pueda caer. Por ejemplo, mientras procesa datos si algún nodo se cae, el marco reprograma la tarea a otro nodo. Esta reprogramación de la tarea no puede ser infinita. Hay un límite superior para eso también. El valor predeterminado del intento de tarea es 4. Si una tarea (Mapper o reductor) falla 4 veces, el trabajo se considera un trabajo fallido. Para trabajos de alta prioridad o trabajos enormes, el valor de este intento de tarea también se puede aumentar.

Ahora veamos el flujo de datos de Hadoop MapReduce con componentes en detalle:

a. Archivos de entrada

Los datos para una tarea MapReduce se almacenan en archivos de entrada, y los archivos de entrada generalmente residen en HDFS. El formato de estos archivos es arbitrario, mientras que también se pueden usar archivos de registro basados ​​en líneas y formato binario.

Consulte esta guía rápida para conocer las características de HDFS en detalle.

si. InputFormat

Ahora, InputFormat define cómo se dividen y leen estos archivos de entrada. InputFormat selecciona los archivos u otros objetos que se utilizan para la entrada. InputFormat crea InputSplit.

C. InputSplits

InputSplit creado por InputFormat, representa lógicamente los datos que serán procesados ​​por un Mapper individual. Se crea una tarea de mapa para cada división; por lo tanto, el número de tareas de mapa será igual al número de InputSplits. La división se divide en registros y cada mapa será procesado por el mapeador.

re. RecordReader

RecordReader en Hadoop MapReduce se comunica con InputSplit y convierte los datos en pares clave-valor adecuados para que el mapeador los lea. Por defecto, utiliza TextInputFormat para convertir datos en un par clave-valor. RecordReader se comunica con InputSplit hasta que no se complete la lectura del archivo. RecordReader asigna byte offset (número único) a cada línea presente en el archivo. Además, estos pares clave-valor se envían al asignador para su posterior procesamiento.

mi. Mapper

Mapper procesa cada registro de entrada (desde RecordReader) y genera un nuevo par clave-valor, y este par clave-valor generado por Mapper es completamente diferente del par de entrada. La salida de Mapper también se conoce como salida intermedia que se escribe en el disco local. La salida del Mapper no se almacena en HDFS ya que se trata de datos temporales y la escritura en HDFS creará copias múltiples innecesarias (también HDFS es un sistema de alta latencia). La salida de los mapeadores se pasa al combinador para un proceso posterior.

F. Combinador

El combinador también se conoce como ‘Mini-reductor’. Hadoop MapReduce Combiner realiza la agregación local en la salida de los mapeadores, lo que ayuda a minimizar la transferencia de datos entre el mapeador y el reductor. Una vez que se ejecuta la funcionalidad del combinador, la salida se pasa al particionador para trabajar más.

sol. Particionista

Hadoop MapReduce Partitioner entra en escena si estamos trabajando en más de un reductor (para un reductor no se usa el particionador).

Partitioner toma la salida de los combinadores y realiza particiones. La partición de la salida se realiza en función de la clave y luego se ordena. Por función hash, la clave (o un subconjunto de la clave) se utiliza para derivar la partición.

De acuerdo con el valor clave en MapReduce, cada salida del combinador se particiona, y un registro que tiene el mismo valor clave entra en la misma partición, y luego cada partición se envía a un reductor. La partición permite una distribución uniforme de la salida del mapa sobre el reductor.

h. Barajar y ordenar

Ahora, la salida se baraja al nodo de reducción (que es un nodo esclavo normal pero la fase de reducción se ejecutará aquí, por lo tanto, se llama nodo reductor). La combinación es el movimiento físico de los datos que se realiza a través de la red. Una vez que todos los mapeadores están terminados y su salida se baraja en los nodos reductores, esta salida intermedia se fusiona y clasifica, que luego se proporciona como entrada para reducir la fase.

Siga esta guía completa para leer más sobre Barajar y Ordenar en Hadoop MapReducee.

yo. Reductor

Reductor toma un conjunto de pares clave-valor intermedios producidos por los mapeadores como entrada y ejecuta una función reductora en cada uno de ellos para generar la salida. La salida del reductor es la salida final, que se almacena en HDFS.

j. RecordWriter

Ahora, RecordWriter escribe estos pares clave-valor de salida de la fase Reductor en los archivos de salida.

k. Formato de salida

El formato de salida determina la forma en que RecordWriter escribe estos pares clave-valor de salida en los archivos de salida. Las instancias de OutputFormat proporcionadas por Hadoop se utilizan para escribir archivos en HDFS o en el disco local. Por lo tanto, la salida final del reductor está escrita en HDFS por instancias de OutputFormat.

De esta manera, se ejecuta un trabajo MapReduce sobre el clúster.

MapReduce se utiliza para ejecutar trabajos de análisis de datos distribuidos y paralelos masivos. Es realmente un marco para interactuar con grandes conjuntos de datos. EG: Desea generar estadísticas agregadas (totales, promedios, etc.) sobre cientos de terabytes de datos. Un trabajo de MapReduce dividirá el trabajo en partes más pequeñas que luego se enviarán a los nodos en el clúster. Los nodos individuales ejecutan su tarea y luego el controlador reúne los resultados de los trabajos más pequeños en la salida final.

Mapeador:

  • Mapper asigna los pares clave / valor de entrada a un conjunto de pares clave / valor intermedios.
  • Los mapas son las tareas individuales que transforman los registros de entrada en registros intermedios. Los registros intermedios transformados no necesitan ser del mismo tipo que los registros de entrada. Un par de entrada dado puede mapearse a cero o muchos pares de salida.
  • El marco Hadoop Map / Reduce genera una tarea de mapa para cada InputSplit generado por InputFormat para el trabajo.

Reductor:

  • Reductor reduce un conjunto de valores intermedios que comparten una clave para un conjunto de valores más pequeño.
  • El número de reducciones para el trabajo lo establece el usuario a través de JobConf.setNumReduceTasks (int).
  • En general, las implementaciones de Reducer pasan el JobConf para el trabajo a través del método JobConfigurable.configure (JobConf) y pueden anularlo para inicializarse. Luego, el marco llama al método reduce (WritableComparable, Iterator, OutputCollector, Reporter) para cada par en las entradas agrupadas. Las aplicaciones pueden anular el método Closeable.close () para realizar cualquier limpieza requerida.
  • El reductor tiene 3 fases primarias: barajar, ordenar y reducir.

MapReduce es el componente principal de Apache Hadoop que solía procesar muchos conjuntos de datos en Hadoop Distributed File System. MapReduce puede procesar los datos en varios clústeres. MapReduce tiene dos tareas principales, a saber, Map and Reduce.

Mapa : la tarea principal del mapa es convertir un conjunto de datos en otro conjunto de datos donde los datos se dividen en pares clave-valor

Reducir : reduzca la tarea, tome los datos de entrada de la salida de las tareas del mapa y convierta esa tupla en un pequeño conjunto de tuplas.

Los componentes principales de MapReduce son Job Tracker, Task Tracker y Job History Server

Job Tracker : se utiliza para administrar todos los trabajos de clústeres

Rastreador de tareas : solía ejecutar tareas de mapa y reducción

Servidor de historial de trabajos : se utiliza para rastrear los trabajos completados y se implementa como rastreador de trabajos.

Descargar PDF – Temas avanzados de Hadoop

Echa un vistazo – Arquitectura y componentes principales de Apache MapReduce

Supongamos que tiene 10 archivos en un directorio, cada archivo de 3 mb de tamaño, ¿cómo encontrará la aparición de cada palabra en el archivo? Si comienza a seguir enfoques como ordenar y contar, tomará mucho tiempo contar. La solución para esto es MapReduce. MapReduce se compone de 2 partes 1) Mapper 2) Reductor En palabras simples, mapper mapea cada palabra con la frecuencia. El reductor, por otro lado, agrupará la salida del mapeador en una sola salida. Hay un intermediario llamado combinador.
Digamos que la salida del mapeador 1 es:
hola 1
dr, 1
ciudad, 1
hola 1

digamos que la salida del mapeador 2 es
hola 1
mapa 1
combiner combinará la salida de mapper1 y en lugar de hi dos veces tendremos la frecuencia actualizada a 2.
hola 2
dr, 1
ciudad, 1

hola 1
mapa, 1
ahora el reductor agrupará toda la salida para darle un solo archivo con la palabra y la frecuencia.
hola 3
dr, 1
ciudad, 1

De esta manera, su tarea se calcula más rápido. El tutorial de APache de MapReduce es muy útil.

MapReduce es un modelo de programación y una implementación asociada para procesar y generar grandes conjuntos de datos con un algoritmo distribuido paralelo en un clúster. Enfoques conceptualmente similares han sido muy conocidos desde 1995 con el estándar de interfaz de paso de mensajes que tiene operaciones de reducción y dispersión.

Geab más en: Cloud Computing Sales on Udemy

MapReduce es un marco de programación utilizado de manera prominente en Hadoop para procesar datos guardados en el Sistema de archivos distribuidos de Hadoop (HDFS).

Consiste en las siguientes fases
1. Mapa
2. Ordenar y barajar
3. Reducir

Algunos ejemplos de reducción avanzada de mapas se pueden encontrar en Ejemplos de reducción avanzada de mapas – Parte 1

Ejemplos avanzados de reducción de mapas – Parte 2

MapReduce explicado en 41 palabras
Objetivo: contar el número de libros en la biblioteca.
Mapa: Cuenta el estante n. ° 1, cuento el estante n. ° 2.
(Cuantas más personas tengamos, más rápido será esta parte).
Reducir: todos nos juntamos y sumamos nuestros recuentos individuales.

MapReduce es un paradigma de programación utilizado cuando te quedas sin memoria física para procesar tus conjuntos de datos (conjuntos de datos en el rango de 100s de TB). Le permite almacenar los datos en múltiples discos duros y le permite ejecutar la lógica de procesamiento de datos en todos los discos duros al mismo tiempo y, por lo tanto, el tiempo de ejecución de la tarea disminuye cuando aumenta el no de nodos informáticos (discos duros)

Refiera mi respuesta del mismo tipo de pregunta: ¿Qué es Hadoop MapReduce y cómo funciona?