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
- ¿Cuáles son los conceptos principales que todo programador de C ++ debe saber sobre el lenguaje?
- ¿Cuáles son algunas limitaciones del uso de datos proporcionados por terceros en su aplicación?
- ¿Cómo ofertan las empresas indias de software para proyectos de software?
- ¿Por qué algunos practicantes / defensores del desarrollo ágil son tan dogmáticos en su enfoque?
- ¿Cuál es el alcance de las pruebas de software en el futuro?
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.