2011-06-24 13 views
6

¿La abstracción de MapReduce es buena para resolver problemas incluso en una sola máquina? Por ejemplo, tengo una máquina de 12 núcleos y tengo que contar palabras en miles de archivos (ejemplo clásico de MapReduce).¿MapReduce es adecuado para resolver problemas en un entorno de memoria de múltiples núcleos de una sola máquina?

Usar una implementación de MapReduce con Mappers y Reductores en múltiples hilos es una buena forma de resolver este problema, considerando que estamos trabajando en una sola máquina con un solo disco duro.

Supongo que mi pregunta se reduce a esto: ¿El paradigma de MapReduce es bueno solo para trabajar en un grupo de máquinas?

+0

Apostaría que el "único disco" es el gran punto. Espero que un solo núcleo pueda ejecutar 'isspace (3)' en caracteres provenientes de un disco duro giratorio tan rápido como la unidad pueda servirlos. ¿Alguno de los archivos ya estará en la memoria caché del búfer porque se usan con frecuencia? – sarnold

+0

Para hacerlo más interesante, podemos decir que tenemos un gran buffer de archivos en la memoria. Digamos que tenemos 16 GB de RAM para contener archivos y el trabajo de MapReduce consume este búfer. Y si no hay latencia del disco? Si todos los datos están en RAM? –

+0

En ese caso, esperaría que varios hilos de computación valen la pena. – sarnold

Respuesta

1

Supongo que mi pregunta se reduce a esto: ¿El paradigma MapReduce es bueno solo para trabajar en un conjunto de máquinas?

En general, sí: es probable que MapReduce sea menos eficiente en una sola PC. No puedo pensar en muchas situaciones (si las hay) de que MapReduce tendría una ventaja sobre más enfoques optimizados para recursos cuando se utiliza en un entorno no distribuido (es decir, una sola PC, un solo disco duro). En otras palabras, si está tratando de exprimir cada pequeño rendimiento de su PC individual, lo más probable es que pueda lograrlo con una solución personalizada en lugar de MapReduce.

Sin embargo, si planea agregar más nodos y crear un clúster, entonces MapReduce será el paradigma de ir a.

+0

Si el trabajo realizado por cada tarea de mapa fue más sustancial (por ejemplo, intensivo desde el punto de vista informático), un enfoque de reducción de mapa podría ser una buena opción para una sola máquina. –

7

En general, puede tener dos situaciones:

  1. su problema es lo suficientemente pequeño como para caber en la memoria de su sistema único y su sistema solo tiene suficiente potencia de CPU para resolver el problema dentro del tiempo requerido.
  2. Tu problema es demasiado grande. 2.1 El tiempo de ejecución es demasiado grande (IO de disco y/o tiempo de CPU) 2.2 Demasiado grande para caber en la memoria (RAM).

Para 2.1 y 2.2, el paradigma MapReduce ayuda mucho al dividir el trabajo en muchos trozos más pequeños. Si necesita más CPU, simplemente agregue CPU.

Así que si tiene un sistema único y resulta que su problema es demasiado grande para caber en la memoria (punto 2.2) puede beneficiarse del hecho de que MapReduce puede poner una parte del problema en el disco hasta esa parte debe ser procesado.

El hecho importante es que si usted tiene un problema que es lo suficientemente pequeño como para caber en la memoria y lo suficientemente pequeño como para ser procesado en un único sistema a continuación, una solución (no MapReduce) dedicado puede ser mucho más rápido.

Cuestiones relacionadas