Лучше ли использовать карту или пакет mapreduce для создания задания Hadoop?

Чтобы создать задания MapReduce, вы можете использовать старый пакет org.apache.hadoop.mapred или более новый org.apache.hadoop.mapreduce пакет для Mappers и Reducers, Jobs... Первый был отмечен как устаревший, но в то же время он был отменен. Теперь я задаюсь вопросом, лучше ли использовать старый пакет mapred или новый пакет mapreduce для создания задания и почему. Или это зависит только от того, нужны ли вам такие вещи, как MultipleTextOutputFormat, который доступен только в старом упакованном пакете?

Ответ 1

Функциональность не имеет большого значения между старым (o.a.h.mapred) и новым (o.a.h.mapreduce) API. Единственное существенное различие заключается в том, что записи переносятся в mapper/reducer в старый API. Хотя новый API поддерживает механизм pull/push. Вы можете получить дополнительную информацию о механизме тяги здесь.

Кроме того, старый API был un-debrecated с 0.21. Вы можете найти дополнительную информацию о новом API здесь.

Как вы уже упоминали, некоторые из классов (например, MultipleTextOutputFormat) не были перенесены в новый API, из-за этого и вышеупомянутой причины лучше придерживаться старого API (хотя перевод обычно довольно прост).

Ответ 2

Оба старых и новых API хороши. Однако новый API чище. Используйте новый API везде, где можете, и используйте старый, где вам нужны конкретные классы, которых нет в новом API (например, MultipleTextOutputFormat)

Но будьте осторожны, чтобы не использовать сочетание старых и новых API в той же работе Mapreduce. Это приводит к странным проблемам.

Ответ 3

Старый API (отображенный)

  • Существует в пакете org.apache.hadoop.mapred

  • Предоставить конфигурацию конфигурации карты/уменьшения.

  • Уменьшает значения для данного ключа на основе Iterator
  • Пакет Summary

Новый API (mapreduce)

  1. Существует в пакете org.apache.hadoop.mapreduce

  2. Конфигурация заданий выполняется отдельным классом, Called JobConf, который является расширением конфигурации
       Класс

  3. Уменьшает значения для данного ключа на основе Iterable

  4. Резюме пакета