2010-05-19 15 views
0

J'ai une rapide question Hadoop Streaming. Si j'utilise le streaming Python et que j'ai des paquets Python dont mes mappeurs/réducteurs ont besoin mais qui ne sont pas installés par défaut, dois-je les installer sur toutes les machines Hadoop ou y at-il une sérialisation qui les envoie au machines distantes?Gestion des dépendances avec Hadoop Streaming?

+0

Thi s question montre comment importer nltk sur chaque noeud. http://stackoverflow.com/questions/6811549/how-can-i-include-a-python-package-with-hadoop-streaming-job/6811775#6811775 – viper

Répondre

2

S'ils ne sont pas installés sur vos boîtes de tâches, vous pouvez les envoyer avec -file. Si vous avez besoin d'un package ou d'une autre structure de répertoire, vous pouvez envoyer un fichier zip, qui sera décompressé pour vous. Voici une Haddop 0,17 invocation:

$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-0.17.0-streaming.jar -mapper mapper.py -reducer reducer.py -input input/foo -output output -file /tmp/foo.py -file /tmp/lib.zip 

Cependant, cette question soit pour une mise en garde:

https://issues.apache.org/jira/browse/MAPREDUCE-596