La mia risposta si basa sulla conoscenza e sull'esperienza di Hadoop MR e sull'apprendimento di Mongo DB MR. Vediamo quali sono le principali differenze e poi proviamo a definire i criteri per la selezione:Le differenze sono:
- Il MR di Hadoop può essere scritto in Java, mentre quello di MongoDB è in JavaScript.
- MR di Hadoop è in grado di utilizzare tutti i core, mentre quello di MongoDB è a thread singolo.
- Hadoop MR non verrà collocato con i dati, mentre Mongo DB verrà collocato.
- Hadoop MR ha milioni di ore di motore e può far fronte a molti casi d'angolo con enormi dimensioni di output, distorsioni dei dati, ecc.
- Esistono framework di livello superiore come Pig, Hive, Cascading basati sul motore Hadoop MR.
- Hadoop MR è mainstream ed è disponibile molto supporto della community.
Da quanto sopra posso suggerire i seguenti criteri per la selezione:
Seleziona Mongo DB MR se hai bisogno di un semplice raggruppamento e filtraggio, non aspettarti pesanti mescolamenti tra mappa e riduzione. In altre parole - qualcosa di semplice.
Seleziona hadoop MR se intendi eseguire lavori MR complicati e computazionalmente intensi (ad esempio alcuni calcoli di regressione). Avere una dimensione dei dati molto o imprevedibile tra la mappa e la riduzione suggerisce anche Hadoop MR.
Java è un linguaggio più forte con più librerie, soprattutto statistiche. Questo dovrebbe essere preso in considerazione.