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

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

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

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

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

Другие вопросы по тегам