mapreduce fork-join

mapreduce - Diferencia entre Fork/Join y Map/Reduce



fork-join (2)

Existe un documento científico completo sobre el tema, Compara Fork / Join y MapReduce .

El documento compara el rendimiento, la escalabilidad y la programabilidad de tres paradigmas paralelos: fork / join, MapReduce y un enfoque híbrido.

Lo que encuentran es básicamente que Java fork / join tiene baja latencia de inicio y escala bien para entradas pequeñas (<5MB), pero no puede procesar entradas más grandes debido a las restricciones de tamaño de las arquitecturas de nodo único de memoria compartida. Por otro lado, MapReduce tiene una latencia de inicio significativa (decenas de segundos), pero se adapta bien a las entradas mucho más grandes (> 100 MB) en un clúster de cálculo.

Pero hay mucho más para leer allí si estás preparado para eso.

¿Cuál es la diferencia clave entre Fork / Join y Map / Reduce?

¿Difieren en el tipo de descomposición y distribución (datos frente a computación)?


Una diferencia clave es que F-J parece estar diseñado para funcionar en una sola máquina virtual Java, mientras que M-R está explícitamente diseñado para funcionar en un gran grupo de máquinas. Estos son escenarios muy diferentes.

FJ ofrece instalaciones para dividir una tarea en varias subtareas, de forma recursiva; más niveles, posibilidad de comunicación ''entre tenedor'' en esta etapa, programación mucho más tradicional. No se extiende (al menos en el papel) más allá de una sola máquina. Ideal para aprovechar su ocho núcleos.

MR solo hace una gran división, con los splits mapeados sin hablar entre sí, y luego reduce todo junto. Un nivel único, sin comunicación entre divisiones hasta reducir y masivamente escalable. Ideal para aprovechar tu parte de la nube.