2012-02-15 18 views
21

Quali sono le principali differenze per eseguire la mappa/ridurre il lavoro su MongoDB utilizzando la mappa di Hadoop/riduci rispetto alla mappa integrata/riduzione di Mongo?Mappa Hadoop/Riduci vs Mappa incorporata/Riduci

Quando selezionare quale mappa/ridurre il motore? quali sono i pro e i contro di ciascun motore per lavorare sui dati memorizzati in mongodb?

risposta

30

La mia risposta si basa sulla conoscenza e sull'esperienza di MR Hadoop e sull'apprendimento di Mongo DB MR. Vediamo quali sono le principali differenze e quindi provare a definire i criteri per la selezione: Le differenze sono:

  1. MR di Hadoop può essere scritto in Java, mentre MongoDB di è in JavaScript.
  2. Il MR di Hadoop è in grado di utilizzare tutti i core, mentre quello di MongoDB è a thread singolo.
  3. Hadoop MR non verrà posizionato con i dati, mentre quelli di Mongo verranno collocati.
  4. Hadoop MR ha milioni di motore/ore e può far fronte a molti casi d'angolo con enorme dimensione della produzione, disallineamenti di dati, ecc
  5. Ci sono quadri di livello superiore come il maiale, Hive, a cascata costruita in cima al Hadoop Motore MR.
  6. Hadoop MR è mainstream e un sacco di supporto della comunità è disponibile.

Da quanto sopra posso suggerire i seguenti criteri di selezione:
Selezionare Mongo DB MR se avete bisogno di gruppo semplice da e filtraggio, non aspettatevi pesante rimescolamento tra la mappa e ridurre. In altre parole: qualcosa di semplice.

Selezionare il numero di routine MR se si eseguono lavori MR complessi e computazionalmente intensi (ad esempio alcuni calcoli di regressioni). Avere una dimensione molto grande o imprevedibile dei dati tra mappa e riduzione suggerisce anche MR Hadoop.

Java è un linguaggio più potente con più librerie, soprattutto statistiche. Questo dovrebbe essere preso in considerazione.

+0

Grandi punti, grazie. Pensi che mantenere i dati in Mongo e NON usare HDFS sarà di grandi dimensioni? La mia dimensione dei dati è di circa 10 TB e altamente strutturata e i miei calcoli sono semplici e complessi.Mantenere i dati in Mongo ci offre molti vantaggi ma non sono sicuro che l'utilizzo di HDFS potrebbe essere problematico? – iCode

+0

e un'altra domanda, è sicuro dire che Hadoop sarà più veloce anche su un semplice lavoro M/R? – iCode

+1

La mia conoscenza di Mongo DB è limitata. Nella migliore delle ipotesi questo sistema è costruito per l'accesso casuale, costruito attorno all'indicizzazione. Questo è un sistema creato per servire online. Nello stesso tempo HDFS è costruito per l'accesso sequenziale, scansioni pesanti e tutti i trade-off sono fatti in questa direzione. Di conseguenza non mi aspetto che MongoDB sia bravo nelle scansioni ... Con questa dimensione di dati, sono domande difficili e penso che siano necessarie maggiori informazioni per decidere. Specificamente - sta influenzando le prestazioni di Mongo DB è fondamentale. –

0

Non ho molta esperienza con Hadoop MR, ma la mia impressione è che funzioni solo su HDFS, quindi dovresti duplicare tutti i tuoi dati Mongo in HDFS. Se sei disposto a duplicare tutti i tuoi dati, suppongo che Hadoop MR sia molto più veloce e più robusto di Mongo MR.

+1

In realtà non è così. Questo progetto https://github.com/mongodb/mongo-hadoop ti aiuta a eseguire hadoop direttamente sui dati monogo. non è necessario spostarsi su hdf – iCode

+0

Hadoop MR può funzionare con qualsiasi origine dati a cui è possibile accedere da java. Non solo HDFS. – Marquez

10

A partire da MongoDB 2.4 I lavori MapReduce non sono più a thread singolo.

Inoltre, vedere Aggregation Framework per un modo dichiarativo di prestazioni elevate per eseguire aggregati e altri carichi di lavoro analitici in MongoDB.

+0

Questo errore sembra non essere d'accordo: https://jira.mongodb.org/browse/SERVER-463 –

0

L'articolo 3 è certamente errato quando si tratta di Hadoop. L'elaborazione della colocazione con i dati fa parte delle fondamenta di Hadoop.