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. 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, rendez-vous sur 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 chargez-les sur 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 : String 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 : String 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 |
Oui |
-mapper |
Nom de l'exécutable du mappeur. Type : String Par défaut : aucun |
Oui |
-reducer |
Nom de l'exécutable du réducteur. Type : String 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 : String 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 : String 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 : String 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)