Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Traitement des données avec Streaming
Le streaming Hadoop est un utilitaire fourni avec Hadoop qui vous permet de développer des MapReduce exécutables dans des langages autres que Java. Le streaming est implémenté sous la forme d'un JAR fichier, vous pouvez donc l'exécuter depuis Amazon EMR API ou la ligne de commande comme un JAR fichier standard.
Cette section explique comment utiliser le streaming avec AmazonEMR.
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, rendez-vous sur http://hadoop.apache.org/docs/stable/hadoop-streaming/ HadoopStreaming
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 chargez-les sur Amazon S3. |
3 |
Utilisez l'interface de ligne de EMR commande Amazon ou EMR la console Amazon 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 télé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 télécharge les données vers l'emplacement spécifié par |
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 du lien symbolique à créer dans le répertoire de travail] |
Non |
-cacheArchive |
JARfichier à extraire dans le répertoire de travail Type : chaîne Par défaut : aucun Contraintes : [URI] # [nom du répertoire de liens symboliques à créer dans le 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' WordCount exemple d'application.
#!/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)