Question

J'ai une question rapide Hadoop en streaming. Si j'utilise Python en streaming et je les paquets Python que mes cartographes / réducteurs ont besoin, mais ne sont pas installés par défaut dois-je installer les sur toutes les machines Hadoop aussi bien ou est-il une sorte de sérialisation qui les envoie au machines distantes?

Était-ce utile?

La solution

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

$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, voir cette question pour une mise en garde:

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

Autres conseils

Si vous utilisez Dumbo vous pouvez utiliser -libegg pour distribuer des fichiers d'œufs et configurer automatiquement le moteur d'exécution Python:

https://github.com/klbostee/dumbo/wiki/ court tutoriel # wiki-eggs_and_jars https://github.com/klbostee/dumbo/wiki/Configuration-files

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top