Amazon Elastic Map Reduce запускает один или несколько процессов сопоставления для каждого экземпляра? - PullRequest
1 голос
/ 03 февраля 2012

У меня вопрос: должен ли я сам заботиться о многопроцессорности в моем маппере (читать задачи из stdin, затем распределять их по рабочим процессам, объединять результаты в главном процессе и выводить в stdout), или Hadoop позаботится об этом автоматически?

Я не нашел ответа ни в документации по Hadoop Streaming, ни в часто задаваемых вопросах об Amazon Elastic MapReduce.

Ответы [ 3 ]

1 голос
/ 03 февраля 2012

Hadoop имеет понятие «слоты». Слот - это место, где будет запущен процесс картографирования. Вы настраиваете количество слотов на узел TaskTracker. Это теоретический максимум процесса карты, который будет выполнять парралел на узел. Может быть меньше, если не хватает отдельных частей входных данных (называемых FileSplits).
Elastic MapReduce имеет свою собственную оценку того, сколько слотов выделять в зависимости от возможностей экземпляра.
В то же время я могу представить сценарий, в котором ваша обработка будет более эффективной, когда один поток данных обрабатывается многими ядрами. Если у вас есть свой маппер со встроенным многоядерным использованием - вы можете уменьшить количество слотов. Но обычно это не так в типичных задачах Hadoop.

1 голос
/ 15 марта 2012

См. Документ EMR doco [1], в котором указано количество задач сопоставления / уменьшения для каждого типа экземпляра.

В дополнение к ответам Дэвида Hadoop также может запускать несколько потоков на слот карты, задав ...

conf.setMapRunnerClass(MultithreadedMapRunner.class);  

По умолчанию установлено 10 потоков, но оно настраивается с помощью

-D mapred.map.multithreadedrunner.threads=5

. Я часто нахожу это полезным для пользовательских вещей с высоким IO.

[1] http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/HadoopMemoryDefault_AMI2.html

0 голосов
/ 03 февраля 2012

Мой вопрос таков: должен ли я сам заботиться о многопроцессорности в моем маппере (читать задачи из stdin, затем распределять их по рабочим процессам, объединять результаты в главном процессе и выводить в stdout) или Hadoop позаботится об этом автоматически?

После того, как кластер Hadoop был установлен, минимум, необходимый для отправки задания, составляет

  • Формат ввода и местоположение
  • Формат вывода и местоположение
  • Функции Map и Reduce для обработки данных
  • Расположение NameNode и JobTracker

Hadoop позаботится о распределении работы по различным узлам, отслеживая их, читаяданные из i / p и запись данных в o / p.Если пользователь должен выполнить все эти задачи, то нет смысла использовать Hadoop.

Предложить, чтобы просмотреть документацию Hadoop и пару учебных пособий.

...