Est-il possible de lire MongoDB données, les traiter avec Hadoop, et la sortie en RBDS (MySQL)?
Résumé:
Est-il possible de:
- Importer des données dans Hadoop avec le «MongoDB Connecteur pour Hadoop».
- Processus avec Hadoop MapReduce.
- L'exporter avec Sqoop en une seule transaction.
Je suis en création d'une application web avec MongoDB. Alors que MongoDB fonctionnent bien pour la plupart des travaux, dans certaines parties, j'ai besoin d'une plus forte transactionnelle de garanties, pour lequel j'utilise une base de données MySQL.
Mon problème est que je veux lire une grande collection de MongoDB pour l'analyse de données, mais la taille de la collecte signifie que l'analyse du travail serait trop long à traiter. Malheureusement, MongoDB est intégré dans la carte de réduire cadre ne serait pas bien pour cet emploi, donc je préfère effectuer l'analyse avec Apache Hadoop.
Je comprends qu'il est possible de lire les données à partir de MongoDB dans Hadoop à l'aide de la «MongoDB Connecteur pour Hadoop», qui lit les données dans MongoDB, il le traite avec MapReduce dans Hadoop, et enfin les sorties les résultats dans une base de données MongoDB.
Le problème est que je veux que la sortie de la MapReduce pour aller dans une base de données MySQL, plutôt que de MongoDB, parce que les résultats doivent être fusionnées avec d'autres tables MySQL.
Pour ce faire, je sais que Sqoop pouvez exporter le résultat d'une Hadoop MapReduce dans MySQL.
En fin de compte, j'ai trop envie de lire MongoDB données pour les traiter ensuite avec Hadoop et enfin afficher le résultat dans une base de données MySQL.
Est-ce possible? Quels sont les outils disponibles pour ce faire?
- Je mettre à jour ma question pour la clarification
jetez un oeil à ma mise à jour de réponse, ce qui doit expliquer comment vous pouvez faire ce que vous demandez.
fantastique!!!! merci beaucoup!
OriginalL'auteur paganotti | 2012-04-01
Vous devez vous connecter pour publier un commentaire.
Plusieurs choses à noter:
L'exportation de données à partir de MongoDB pour Hadoop à l'aide d'Sqoop n'est pas possible. C'est parce que Sqoop utilise JDBC qui fournit un niveau d'appel API pour SQL de la base de données, mais MongoDB n'est pas une base SQL base de données. Vous pouvez regarder le «MongoDB Connecteur pour Hadoop» pour faire ce travail. Le connecteur est disponible sur GitHub. (Edit: comme vous le soulignez dans votre mise à jour.)
Sqoop les exportations ne sont pas dans une seule transaction par défaut. Au lieu de cela, selon le Sqoop docs:
La «MongoDB Connecteur pour Hadoop», ne semble pas pour forcer le flux de travail que vous décrivez. Selon les docs:
En effet, aussi loin que je comprends de la «MongoDB Connecteur pour Hadoop»: exemples, il serait possible de spécifier un
org.apache.hadoop.mapred.lib.db.DBOutputFormat
dans votre emploi Hadoop MapReduce pour écrire la sortie dans une base de données MySQL. Suivant l'exemple de l'connecteur référentiel:OriginalL'auteur brice
Je vous recommande de prendre un coup d'oeil à Apache Pig (qui s'exécute au-dessus d'Hadoop de réduire la carte). Il sera de sortie à MySql (pas besoin d'utiliser Scoop). Je l'ai utilisé pour faire ce que vous décrivez. Il est possible de faire un "upsert" de Porc et MySql. Vous pouvez utiliser le MAGASIN de commande avec la tirelire du DBStorage et MySql INSERT DOUBLE de la CLÉ de mise à JOUR (http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html).
OriginalL'auteur Marquez
Utilisation MongoHadoop connecteur à lire des données dans MongoDB et de les traiter à l'aide d'Hadoop.
Lien:
https://github.com/mongodb/mongo-hadoop/blob/master/hive/README.md
L'aide de ce connecteur, vous pouvez utiliser Pig et Hive pour lire les données à partir de Mongo db et de les traiter à l'aide d'Hadoop.
Exemple de Mongo tableau de la Ruche:
Une fois qu'il est exporté vers la table de la ruche, vous pouvez utiliser Sqoop ou de Porc pour exporter les données vers mysql.
Ici est un flux.
Mongo DB -> Processus de données à l'aide de Mongo DB connecteur hadoop (Pig) -> Entreposer à la table de la ruche/HDFS -> Exporter des données vers mysql à l'aide de sqoop.
OriginalL'auteur Chetan Shirke