Les algorithmes de réduction de carte écrits pour MongoDB peuvent-ils être portés vers Hadoop ultérieurement?

11

Dans notre entreprise, nous avons une base de données MongoDB contenant un grand nombre de données non structurées, sur lesquelles nous devons exécuter des algorithmes de réduction de carte pour générer des rapports et d'autres analyses. Nous avons le choix entre deux approches pour la mise en œuvre des analyses requises:

  1. Une approche consiste à extraire les données de MongoDB vers un cluster Hadoop et à effectuer l'analyse entièrement dans la plateforme Hadoop. Cependant, cela nécessite des investissements considérables dans la préparation de la plate-forme (logiciels et matériel) et la formation de l'équipe à travailler avec Hadoop et à lui écrire des tâches de réduction de carte.

  2. Une autre approche consiste à simplement concentrer nos efforts sur la conception des algorithmes de réduction de carte et à exécuter les algorithmes sur les fonctionnalités de réduction de carte de MongoDB. De cette façon, nous pouvons créer un prototype initial de système final qui peut générer les rapports. Je sais que les fonctionnalités de réduction de carte de MongoDB sont beaucoup plus lentes par rapport à Hadoop, mais actuellement les données ne sont pas si grandes que cela en fait encore un goulot d'étranglement, du moins pas pour les six prochains mois.

La question est, en utilisant la deuxième approche et en écrivant les algorithmes pour MongoDB, peut-on les porter plus tard sur Hadoop avec peu de modifications et de refonte d'algorithmes? MongoDB prend simplement en charge JavaScript, mais les différences de langage de programmation sont faciles à gérer. Cependant, y a-t-il des différences fondamentales dans le modèle de réduction de carte de MongoDB et Hadoop qui pourraient nous obliger à repenser considérablement les algorithmes pour le portage vers Hadoop?

Amir Ali Akbari
la source

Réponses:

4

Il y aura certainement une tâche de traduction à la fin si vous prototypez en utilisant uniquement du mongo.

Lorsque vous exécutez une tâche MapReduce sur mongodb, la source de données et la structure sont intégrées. Lorsque vous vous convertissez finalement en hadoop, vos structures de données peuvent ne pas se ressembler. Vous pouvez utiliser le connecteur mongodb-hadoop pour accéder aux données mongo directement depuis hadoop, mais ce ne sera pas aussi simple que vous ne le pensez. Le temps de comprendre comment effectuer la conversion de la manière la plus optimale sera plus facile à justifier une fois que vous aurez un prototype en place, l'OMI.

Bien que vous deviez traduire les fonctions mapreduce, le pseudocode de base devrait bien s'appliquer aux deux systèmes. Vous ne trouverez rien de ce qui peut être fait dans MongoDB qui ne peut pas être fait en utilisant Java ou qui est beaucoup plus complexe à faire avec Java.

Steve Kallestad
la source
5

Vous pouvez utiliser des algorithmes de réduction de carte dans Hadoop sans les programmer en Java. Cela s'appelle le streaming et fonctionne comme la tuyauterie Linux. Si vous pensez que vous pouvez porter vos fonctions pour lire et écrire sur le terminal, cela devrait fonctionner correctement. Voici un exemple de billet de blog qui montre comment utiliser les fonctions de réduction de carte écrites en Python dans Hadoop.

Damian Melniczuk
la source
1
Cela ferait quand même mongo faire le traitement, ce qui, à mon avis, doit être évité dans la solution finale. Vous donner quand même un vote positif pour avoir apporté un élément important de connaissances.
Steve Kallestad
4

Vous pouvez également créer une connexion MongoDB-Hadoop .

phyrox
la source
Merci pour votre message, mais pouvez-vous inclure ici une description globale de la solution liée? Le lien peut avoir la réponse à la question, mais les réponses de lien uniquement sont déconseillées.
Rubens