Gli algoritmi di riduzione delle mappe scritti per MongoDB possono essere trasferiti su Hadoop in un secondo momento?


11

Nella nostra azienda, abbiamo un database MongoDB che contiene molti dati non strutturati, sui quali dobbiamo eseguire algoritmi di riduzione delle mappe per generare report e altre analisi. Abbiamo due approcci tra cui scegliere per l'implementazione delle analisi richieste:

  1. Un approccio consiste nell'estrarre i dati da MongoDB in un cluster Hadoop ed eseguire l'analisi completamente nella piattaforma Hadoop. Tuttavia, ciò richiede notevoli investimenti nella preparazione della piattaforma (software e hardware) e nella formazione del team affinché lavori con Hadoop e scriva attività per ridurre le mappe.

  2. Un altro approccio consiste nello sforzo di progettare gli algoritmi di riduzione delle mappe ed eseguire gli algoritmi sulle funzionalità di riduzione delle mappe di MongoDB. In questo modo, possiamo creare un prototipo iniziale del sistema finale in grado di generare i report. So che le funzionalità di riduzione delle mappe di MongoDB sono molto più lente rispetto a Hadoop, ma al momento i dati non sono così grandi da renderlo ancora un collo di bottiglia, almeno non per i prossimi sei mesi.

La domanda è, usando il secondo approccio e scrivendo gli algoritmi per MongoDB, possono essere successivamente portati su Hadoop con poche modifiche necessarie e riprogettazione dell'algoritmo? MongoDB supporta solo JavaScript ma le differenze nel linguaggio di programmazione sono facili da gestire. Tuttavia, ci sono differenze fondamentali nel modello di riduzione della mappa di MongoDB e Hadoop che potrebbero costringerci a ridisegnare gli algoritmi sostanzialmente per il porting su Hadoop?


Risposte:


4

Alla fine ci sarà sicuramente un'attività di traduzione se prototipi usando solo mongo.

Quando si esegue un'attività MapReduce su mongodb, ha l'origine dati e la struttura incorporate. Quando alla fine si converte in hadoop, le strutture dei dati potrebbero non avere lo stesso aspetto. Potresti sfruttare il connettore mongodb-hadoop per accedere ai dati di mongo direttamente dall'interno di hadoop, ma non sarà così semplice come potresti pensare. Il tempo per capire come eseguire esattamente la conversione in modo ottimale sarà più facile giustificare una volta che avrai messo in atto un prototipo, IMO.

Mentre dovrai tradurre le funzioni di mapreduce, lo pseudocodice di base dovrebbe applicarsi bene a entrambi i sistemi. Non troverai nulla che possa essere fatto in MongoDB che non può essere fatto usando Java o che è significativamente più complesso da fare con Java.


5

È possibile utilizzare gli algoritmi di riduzione delle mappe in Hadoop senza programmarli in Java. Si chiama streaming e funziona come piping Linux. Se ritieni di poter eseguire il porting delle tue funzioni per leggere e scrivere sul terminale, dovrebbe funzionare correttamente. Ecco un post sul blog di esempio che mostra come usare le funzioni di riduzione della mappa scritte in Python in Hadoop.


1
Ciò consentirebbe a mongo di eseguire l'elaborazione, cosa che credo dalla domanda debba essere evitata nella soluzione finale. Dandoti comunque un voto per aver sollevato un importante pezzo di conoscenza.
Steve Kallestad,

4

È anche possibile creare un MongoDB-Hadoop collegamento .


Grazie per il tuo post, ma puoi includere qui una descrizione generale della soluzione collegata? Il collegamento può avere la risposta alla domanda, ma le risposte di solo collegamento sono scoraggiate.
Rubens,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.