Что лучше использовать пакет mapred или mapreduce для создания Hadoop Job? - PullRequest
44 голосов
/ 29 сентября 2011

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

Ответы [ 3 ]

42 голосов
/ 29 сентября 2011

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

Кроме того, старый API был устаревшим с 0,21.Вы можете найти больше информации о новом API здесь .

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

14 голосов
/ 29 сентября 2011

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

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

2 голосов
/ 25 сентября 2014

Старый API (mapred)

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

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

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

Новый API (mapreduce)

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

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

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

  4. Сводка пакета

...