[Sorting] ¿Cuál es el propósito de mezclar y ordenar la fase en el reductor en Map Reduce Programming?


Answers

Revisemos las fases clave del programa Mapreduce.

La fase del mapa es hecha por los mapeadores. Los mapeadores se ejecutan en pares de clave / valores de entrada sin clasificar. Cada asignador emite pares de clave / valor de salida cero, uno o múltiples para cada par de clave / valor de entrada.

La fase de combinación se realiza por combiners. El combinador debe combinar pares clave / valor con la misma clave. Cada combinador puede ejecutar cero, una o varias veces.

La fase de mezcla y clasificación se realiza por el marco. Los datos de todos los mapeadores se agrupan por la clave, se dividen entre los reductores y se clasifican por la clave. Cada reductor obtiene todos los valores asociados con la misma clave. El programador puede proporcionar funciones de comparación personalizadas para la clasificación y un particionador para la división de datos.

El particionador decide qué reductor obtendrá un par de valor clave particular.

El reductor obtiene pares de clave clasificada / [lista de valores], ordenados por la clave. La lista de valores contiene todos los valores con la misma clave producida por los mapeadores. Cada reductor emite pares de clave / valor de salida cero, uno o múltiples para cada par de clave / valor de entrada .

Eche un vistazo a este article javacodegeeks de Maria Jurcovicova y el artículo de mssqltips de Datta para una mejor comprensión

A continuación se muestra la imagen del artículo safaribooksonline

Question

En la programación de reducción de mapa, la fase de reducción se baraja, clasifica y reduce según sus subpartes. La clasificación es un asunto costoso.

¿Cuál es el propósito de mezclar y ordenar la fase en el reductor en Map Reduce Programming?




Siempre he supuesto que esto era necesario ya que la salida del asignador es la entrada para el reductor, por lo que se ordenó en función del espacio de teclado y luego se dividió en depósitos para cada entrada del reductor. Desea asegurarse de que todos los mismos valores de una clave terminen en la misma cubeta que va al reductor para que se reduzcan juntos. No tiene sentido enviar K1, V2 y K1, V4 a diferentes reductores, ya que necesitan estar juntos para poder reducirlos.

Intentó explicarlo de la manera más simple posible




Algunos de los requisitos de procesamiento de datos no necesitan clasificación en absoluto. Syncsort había hecho la ordenación en Hadoop conectable. Here hay un buen blog de ellos sobre clasificación. El proceso de mover los datos de los mapeadores a los reductores se denomina reorganización, consulte this artículo para obtener más información sobre el mismo.




This es una buena lectura. Espero eso ayude. En términos de clasificación, usted está preocupado, creo que es para la operación de fusión en el último paso de Map. Cuando se realiza la operación del mapa, y es necesario escribir el resultado en el disco local, se operará una fusión múltiple en las divisiones generadas desde el búfer. Y para una operación de fusión, la clasificación de cada partición en avanzado es útil.