Управление зависимостями с помощью Hadoop Streaming?

У меня небольшой вопрос о потоковой передаче Hadoop. Если я использую потоковую передачу Python и у меня есть пакеты Python, которые требуются моим преобразователям/редукторам, но не установлены по умолчанию, нужно ли мне устанавливать их также на всех машинах Hadoop или существует какая-то сериализация, которая отправляет их в удаленные машины?


person James    schedule 19.05.2010    source источник
comment
Этот вопрос показывает, как импортировать nltk на каждом узле. stackoverflow.com/questions/6811549/   -  person viper    schedule 04.11.2013


Ответы (2)


Если они не установлены в ваших ящиках задач, вы можете отправить их с параметром -file. Если вам нужен пакет или другая структура каталогов, вы можете отправить zip-файл, который будет распакован для вас. Вот вызов 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

Тем не менее, см. этот вопрос для предостережения:

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

person Karl Anderson    schedule 19.05.2010

Если вы используете Dumbo, вы можете использовать -libegg для распространения файлов egg и автоматической настройки среды выполнения Python:

https://github.com/klbostee/dumbo/wiki/Short-tutorial#wiki-eggs_and_jars https://github.com/klbostee/dumbo/wiki/Configuration-files

person Joe Futrelle    schedule 15.03.2012