2012-02-17 2 views
2

Je souhaite synchroniser les données avec un système de fichiers Hadoop. Ces données sont destinées à être utilisées en tant qu'entrée pour un travail MapReduce planifié.Synchronisez les données avec HBase/HDFS et utilisez-les comme entrée pour le travail MapReduce

Cet exemple pourrait expliquer plus:

Disons que j'ai un flux d'entrée des documents qui contiennent un tas de mots, ces mots sont nécessaires en entrée pour un emploi MapReduce WordCount. Ainsi, pour chaque document, tous les mots doivent être analysés et téléchargés sur le système de fichiers. Cependant, si le même document arrive à nouveau dans le flux d'entrée, je souhaite uniquement que les modifications soient téléchargées (ou supprimées) du système de fichiers.

Comment les données doivent-elles être stockées? devrais-je utiliser HDFS ou HBase? La quantité de données n'est pas très grande, peut-être quelques Go.

Est-il possible de démarrer des tâches MapReduce programmées avec une entrée HDFS et/ou HBase?

Répondre

0

Je choisirais d'abord le meilleur outil pour le travail, ou faire des recherches pour faire un choix raisonnable. Vous posez la question, qui est l'étape la plus importante. Compte tenu de la quantité de données que vous envisagez de traiter, Hadoop est probablement juste une option. Si c'est le premier pas vers des choses plus grandes et meilleures, cela rétrécira le champ.

Je commencerais alors avec l'approche la plus simple que je m'attends à travailler, ce qui signifie généralement l'utilisation des outils que je connais déjà. Écrivez du code de manière flexible pour faciliter le remplacement des choix initiaux par de meilleurs lorsque vous en apprendrez davantage ou que vous rencontrerez des obstacles. Compte tenu de ce que vous avez dit dans votre question, je commencerais par utiliser HDFS, en utilisant les outils de lignes de commande Hadoop pour pousser les données dans un dossier HDFS (hadoop fs -put ...). Ensuite, j'écrirais un travail ou des travaux MR pour effectuer le traitement, en les exécutant manuellement. Quand cela fonctionnait, j'utiliserais probablement cron pour gérer la planification des tâches.

C'est un bon point de départ. Au fur et à mesure que vous construisez le processus, si vous atteignez un point où HBase semble être un ajustement naturel pour ce que vous voulez stocker, alors passez à cela. Résolvez un problème à la fois, et cela vous donnera plus de clarté sur les outils qui sont le bon choix à chaque étape du processus. Par exemple, vous pouvez accéder à l'étape de planification et savoir à ce moment que cron ne fera pas ce dont vous avez besoin - peut-être que votre organisation a des exigences pour la planification des tâches que cron ne remplira pas. Donc, vous choisissez un outil différent.

Questions connexes