Comment écrire des applications MapReduce

L'API MapReduce est écrit en Java, donc applications MapReduce sont basées sur Java principalement. La liste suivante indique les composants d'une application de MapReduce que vous pouvez développer:

  • Driver (obligatoire): Ceci est la coquille de l'application qui est appelée à partir du client. Il configure la classe MapReduce (que vous ne personnalisez pas) et il soumet à la Resource Manager (ou JobTracker si vous utilisez Hadoop 1).

  • classe (obligatoire): La classe que vous mettre en œuvre besoins de définir les formats des paires clé / valeur que vous entrée et de sortie que vous traitez chaque enregistrement. Cette classe ne dispose que d'une seule méthode, qui est où vous codez comment chaque dossier sera traité et quel clé / valeur à la sortie. Pour sortie paires clé / valeur de la tâche de mappeur, écrivez-les à une instance de la classe.

  • class (optionnel): Le réducteur est facultative pour les applications de carte seule où la phase Réduire est pas nécessaire.




  • class (optionnel): Un combineur peut souvent être défini comme un réducteur, mais dans certains cas il doit être différent. (Rappelez-vous, par exemple, qu'un réducteur peut ne pas être en mesure d'exécuter plusieurs fois sur un ensemble de données sans mutation des résultats.)

  • class (optionnel): Personnaliser le programme de partitionnement par défaut pour effectuer des tâches spéciales, comme une sorte secondaire sur les valeurs de chaque touche ou pour de rares cas impliquant des rares données et les fichiers de sortie déséquilibrée des tâches de mapper.

  • andclasses (facultatif): Hadoop a certains formats de données standard (par exemple, les fichiers texte, les fichiers de séquence, et bases de données), qui sont utiles pour de nombreux cas. Pour les données spécifiquement formatés, la mise en œuvre de vos propres classes pour les données de lecture et d'écriture peut grandement simplifier votre mappeur et le code de réducteur.

De l'intérieur du pilote, vous pouvez utiliser l'API de MapReduce, qui comprend des méthodes de fabrique pour créer des instances de tous les composants dans la liste précédente. (Dans le cas où vous n'êtes pas une personne de Java, une méthode de fabrication est un outil pour créer des objets.)

Une API générique appelé Hadoop streaming vous permet d'utiliser d'autres langages de programmation (le plus souvent, C, Python et Perl). Bien que cette API permet aux organisations ayant des compétences non-Java d'écrire du code MapReduce, l'aide qu'il a quelques inconvénients.

Parce que des couches d'abstraction supplémentaires que ce code de streaming doit passer afin de fonctionner, il ya une pénalité de performance et une augmentation de l'utilisation de mémoire. En outre, vous pouvez coder des fonctions de mapper et réducteur uniquement avec Hadoop streaming. Lecteurs de disques et les écrivains, ainsi que tous vos partitionneurs, doivent être écrites en Java.

Une conséquence directe - et le désavantage supplémentaire - d'être incapable de personnaliser les lecteurs de disques et les écrivains est que les applications Hadoop en streaming sont bien adaptés pour gérer uniquement les données textuelles.


» » » » Comment écrire des applications MapReduce