2012-02-15 20 views
21

¿Cuáles son las principales diferencias para hacer un mapa/reducir el trabajo en MongoDB usando Hadoop map/reduce vs built-in map/reduce of Mongo?Hadoop Mapa/Reducir vs Mapa incorporado/Reducir

¿Cuándo elijo qué mapa/reduzco el motor? ¿Cuáles son los pros y los contras de cada motor para trabajar en los datos almacenados en mongodb?

Respuesta

30

Mi respuesta se basa en el conocimiento y la experiencia de Hadoop MR y el aprendizaje de Mongo DB MR. vamos a ver cuáles son las principales diferencias y luego tratar de definir los criterios para la selección: Las diferencias son:

  1. MR de Hadoop puede ser escrito en Java, mientras que MongoDB es de en JavaScript.
  2. Hadoop's MR es capaz de utilizar todos los núcleos, mientras que MongoDB tiene un solo hilo.
  3. Hadoop MR no se combinará con los datos, mientras que los de Mongo DB se colocarán.
  4. Hadoop MR tiene millones de motor/hora y puede hacer frente a muchos casos de esquina con enorme tamaño de la producción, sesgos de datos, etc
  5. Existen marcos de nivel superior, como cerdo, Colmena, en cascada construida en la parte superior de la Hadoop Motor de MR.
  6. Hadoop MR es la corriente principal y hay una gran cantidad de asistencia de la comunidad disponible.

De lo anterior puedo sugerir los siguientes criterios de selección:
Seleccionar Mongo DB MR si necesita grupo simple y filtrado, no esperan pesada arrastrando los pies entre el mapa y reducir. En otras palabras, algo simple.

Seleccione hadoop MR si va a realizar trabajos de MR complicados y computacionalmente intensos (por ejemplo, algunos cálculos de regresiones). Tener mucho o un tamaño de datos impredecible entre el mapa y reducir también sugiere Hadoop MR.

Java es un lenguaje más potente con más bibliotecas, especialmente estadísticas. Eso debe tenerse en cuenta.

+0

Grandes puntos, gracias. ¿Crees que mantener los datos en Mongo y NO usar HDFS va a ser de cualquier cuello de botella grande? Mi tamaño de datos es de alrededor de 10 TB y está altamente estructurado, y mis cálculos son simples y complejos.Mantener los datos en Mongo nos brinda muchos beneficios, pero no estoy seguro si no usar HDFS podría ser problemático en absoluto. – iCode

+0

y una pregunta más, ¿es seguro decir que hadoop será más rápido incluso en un simple trabajo M/R? – iCode

+1

Mi conocimiento de Mongo DB es limitado. Según mi leal saber y entender, este sistema está diseñado para el acceso aleatorio, construido alrededor de la indexación. Este es un sistema creado para servir en línea. Al mismo tiempo, HDFS está diseñado para el acceso secuencial, los análisis pesados ​​y todas las compensaciones se realizan en esta dirección. Por lo tanto, no espero que MongoDB sea bueno en escaneos ... Con este tamaño de datos, son preguntas difíciles y creo que se necesita más información para decidir. Específicamente: está afectando el rendimiento de Mongo DB es fundamental. –

0

No tengo mucha experiencia con Hadoop MR, pero mi impresión es que solo funciona en HDFS, por lo que tendría que duplicar todos sus datos de Mongo en HDFS. Si está dispuesto a duplicar todos sus datos, creo que Hadoop MR es mucho más rápido y más robusto que Mongo MR.

+1

Ese no es realmente el caso. Este proyecto https://github.com/mongodb/mongo-hadoop te ayuda a ejecutar hadoop directamente en datos de monogo. no es necesario moverse a hdfs – iCode

+0

Hadoop MR puede funcionar con cualquier fuente de datos a la que pueda acceder desde java. No solo HDFS. – Marquez

10

A partir de MongoDB 2.4 Los trabajos de MapReduce ya no tienen un solo hilo.

También, vea el Aggregation Framework para obtener una forma declarativa de mayor rendimiento para realizar agregados y otras cargas de trabajo analíticas en MongoDB.

+0

Este error parece estar en desacuerdo: https://jira.mongodb.org/browse/SERVER-463 –

0

El elemento 3 es ciertamente incorrecto cuando se trata de Hadoop. El procesamiento de la colocación con los datos es parte de la base de Hadoop.

Cuestiones relacionadas