2010-06-19 10 views
5

Je commence juste à apprendre Hadoop, et je me demande ce qui suit: supposons que j'ai un tas de grandes tables de production MySQL que je veux analyser.Récupérer des données de MySQL dans Hadoop

  1. Il semble que je dois vider toutes les tables dans des fichiers texte, afin de les mettre dans le système de fichiers Hadoop - est-ce correct, ou est-il une certaine manière que Hive ou de porc ou tout ce qui peut accéder aux données de MySQL directement?
  2. Si je vide toutes les tables de production dans des fichiers texte, dois-je m'inquiéter d'affecter les performances de production pendant le vidage? Est-ce que cela dépend du moteur de stockage utilisé par les tables? Que dois-je faire?)
  3. Vaut-il mieux déposer chaque table dans un seul fichier, ou diviser chaque table en 64 Mo (ou quelle que soit ma taille de bloc?) des dossiers?

Répondre

10

L'importation de données depuis mysql peut se faire très facilement. Je vous recommande d'utiliser la distribution hadoop de Cloudera, avec un programme appelé 'Sqoop' qui fournit une interface très simple pour importer des données directement à partir de mysql (d'autres bases de données sont également supportées). Sqoop peut être utilisé avec mysqldump ou une requête mysql normale (sélectionnez * ...). Avec cet outil, il n'est pas nécessaire de partitionner manuellement les tables en fichiers. Mais pour hadoop, il vaut mieux avoir un gros fichier.

Liens utiles:
Sqoop User Guide

+0

+1 pour SQOOP ref –

1

2)
Depuis que je ne sais pas votre environnement j'AIRE sur le coffre-fort, côté - OUI, inquiètent affecter les performances de production. En fonction de la fréquence et de la quantité de données écrites, il est possible que le traitement soit effectué dans un délai acceptable, en particulier si vous écrivez simplement des données nouvelles/modifiées. [sous réserve de la complexité de vos requêtes]

Si vous n'avez pas besoin de temps réel ou si vos serveurs ont généralement des périodes où ils sont sous-utilisés (du jour au lendemain?), vous pouvez créer les fichiers en ce moment. En fonction de la configuration de votre environnement, vous pouvez répliquer/vous connecter à un ou plusieurs serveurs db spécifiques dont le seul travail consiste à créer votre ou vos fichiers de données.


3)
Pas besoin pour vous de diviser le fichier, HDFS prendra soin de cloisonner le fichier de données dans bocks et la réplication sur le cluster. Par défaut, il sera automatiquement divisé en blocs de données de 64mb.
voir - Apache - HDFS Architecture

re: réponse Wojtek - SQOOP clicky (ne fonctionne pas dans les commentaires)

Si vous avez d'autres questions ou informations environnement spécifique, laissez-nous savoir HTH Ralph

Questions connexes