2012-07-06 12 views
7

He intentado comprender los conceptos básicos de MapReduce en MongoDB e incluso después de implementarlo, no estoy seguro de qué tan diferente es el GROUP BY de SQL o incluso GROUP BY de Mongo. En el servidor SQL, un GROUP BY se puede hacer por stream o hash aggregate. ¿MapReduce no es similar al agregado de hash, algo más que una gran cantidad de servidores?
MapReduce y SQL GROUP POR

He estado leyendo en lugares que MR para MongoDB se va a ejecutar como proceso en segundo plano ya que es una "operación pesada". Dado que los datos están fragmentados, ¿un GRUPO BY no sería igualmente "pesado"? Dicho esto, solo estoy tratando de comparar ese tipo de operaciones que se pueden implementar tanto como un trabajo MR o mediante la consulta GROUP BY.

¿Hay algo que GROUP BY no puede hacer y solo MR puede hacer?

Además, Hadoop parece ser muy bueno en MR (Esto es solo lo que he leído ... Nunca he trabajado en Hadoop). ¿En qué se diferencia el MR de Hadoop del de Mongo?

Estoy confundido. Amablemente ayúdeme o guíeme a un buen tutorial que explique la necesidad de MapReduce.

Respuesta

7

Lo que obtienes al usar MR es la velocidad. GROUP BY es una operación lenta en SQL y MR es incluso más lenta en MongoDB. Pero lo que hace es crear nuevas colecciones e iterar sobre ellas en tiempo real. Esto es muy bueno cuando tiene grandes cantidades de datos y desea poder iterar en tiempo real.

En el proyecto en el que estoy trabajando hay un script de Python ejecutándose en segundo plano (tarea cron) haciendo diferentes mapas/reducciones una vez por día. En lugar de iterar en tablas grandes con SQL group by, iteramos una vez con MR y luego iteramos rápidamente en las nuevas colecciones creadas.

No tengo experiencia en Hadoop. Así que lamento no poder contarte allí.

Tutorial: http://www.mongovue.com/2010/11/03/yet-another-mongodb-map-reduce-tutorial/

EDIT:

Aquí puede ver una traducción completa de una consulta SQL a un mapa MongoDB/Reducir: GROUP BY to MongoDB Map/Reduce Ha tomado de: http://rickosborne.org/download/SQL-to-MongoDB.pdf

+0

Gracias por la información ... Estoy en lo cierto al pensar que MapReduce es básicamente una 'filosofía' de agregación y que también podría seguirse en el servidor SQL, si pudiéramos generar nuevas tablas sobre la marcha y almacenar resultados intermedios de MR en ¿ellos? –

+0

¡No olvide marcar como respuesta si contestó su pregunta o al menos votó! :) – Ms01

+0

nice chart :) Upvoted .... –

3

Mucha gente usa MongoDB como el almacenamiento de datos y Hadoop para el procesamiento, ya que hay un conector entre los dos. Cada nodo MongoDB puede manejar múltiples nodos de Hadoop que leen. Como nota, recomendaría separar los nodos de mongo y Hadoop para la memoria.

En caso de que no los tiene, aquí hay algunos documentos para que

Otra cosa que podría valer la pena mirando es el nuevo aggregation framework saliendo en 2.2. Aquí está chart que equipara las operaciones en SQL con aquellas en el marco de agregación MongoDB.

+0

Grandes enlaces ... ¡gracias! Los verificará. –

+0

Sí, votado :) Gracias de nuevo; ¡Me diste una rama completamente nueva para explorar! –