Traitement des données avec Streaming - Amazon EMR

Traitement des données avec Streaming

Le streaming Hadoop est un utilitaire qui est fourni avec Hadoop pour vous permettre de développer des fichiers exécutables MapReduce dans d'autres langages que Java. Streaming est mis en œuvre sous la forme d'un fichier JAR, afin que vous puissiez l'exécuter à partir de la ligne de commande ou de l'API Amazon EMR, tout comme un fichier JAR standard.

Cette section décrit comment utiliser le streaming avec Amazon EMR.

Note

Le streaming Apache Hadoop est un outil indépendant. En tant que tel, ses fonctions et ses paramètres ne sont pas tous décrits ici. Pour plus d'informations sur le streaming Hadoop, accédez à http://hadoop.apache.org/docs/stable/hadoop-streaming/HadoopStreaming.html.

Utilisation de l'utilitaire de streaming Hadoop

Cette section décrit comment utiliser l'utilitaire de streaming Hadoop.

1

Ecrivez votre exécutable mappeur et réducteur dans le langage de programmation de votre choix.

Suivez les instructions dans la documentation Hadoop pour écrire vos exécutable de diffusion en continu. Les programmes doivent lire leur entrée à partir de données d'entrée et de sortie standard par le biais de sortie standard. Par défaut, chaque ligne d'entrée/sortie représente un enregistrement et le premier onglet sur chaque ligne est utilisé comme séparateur entre la clé et la valeur.

2

Testez vos exécutables localement et téléchargez-les dans Amazon S3.

3

Utilisez l'interface de ligne de commande d'Amazon EMR ou la console d'Amazon EMR pour exécuter votre application.

Chaque script mappeur se lance comme un processus distinct dans le cluster. Chaque exécutable de réducteur remplace le résultat de l'exécutable du mappeur par la sortie de données du flux de travail.

Les paramètres input, output, mapper, et reducer sont requis par la plupart des applications de streaming. Le tableau suivant décrit ces paramètres et d'autres, facultatifs.

Paramètre Description Obligatoire
-input

Emplacement des données d'entrée sur Amazon S3.

Type : chaîne

Par défaut : aucun

Contrainte : URI. Si aucun protocole n'est spécifié, il utilise alors le système de fichiers par défaut du cluster.

Oui
-output

Emplacement sur Amazon S3 où Amazon EMR charge les données traitées.

Type : chaîne

Par défaut : aucun

Contrainte : URI

Par défaut : si aucun emplacement n'est spécifié, Amazon EMR charge les données à l'emplacement spécifié par input.

Oui
-mapper

Nom de l'exécutable du mappeur.

Type : chaîne

Par défaut : aucun

Oui
-reducer

Nom de l'exécutable du réducteur.

Type : chaîne

Par défaut : aucun

Oui
-cacheFile

Un emplacement Amazon S3 qui contient des fichiers que Hadoop peut copier dans votre répertoire de travail local (principalement pour améliorer les performances).

Type : chaîne

Par défaut : aucun

Contraintes : [URI]#[nom symlink à créer dans répertoire de travail]

Non
-cacheArchive

Fichier JAR à extraire dans le répertoire de travail

Type : chaîne

Par défaut : aucun

Contraintes : [URI]#[nom de répertoire symlink à créer dans répertoire de travail

Non
-combiner

Combine les résultats

Type : chaîne

Par défaut : aucun

Contraintes : nom de classe Java

Non

L'exemple de code suivant est un exécutable de mappeur écrit dans Python. Ce script fait partie de l'exemple d'application WordCount.

#!/usr/bin/python import sys def main(argv): line = sys.stdin.readline() try: while line: line = line.rstrip() words = line.split() for word in words: print "LongValueSum:" + word + "\t" + "1" line = sys.stdin.readline() except "end of file": return None if __name__ == "__main__": main(sys.argv)