Уменьшение карты: ChainMapper и ChainReducer - PullRequest
3 голосов
/ 17 июня 2010

Мне нужно разделить файл JAR Map Reduce на два задания, чтобы получить два разных выходных файла, по одному от каждого редуктора двух заданий.

Я имею в виду, что первое задание должно выдавать выводфайл, который будет входным для второго задания в цепочке.

Я читал кое-что о ChainMapper и ChainReducer в версии 0.20 hadoop (в настоящее время я использую 0.18): это может быть полезно для моих нужд?

Кто-нибудь может предложить мне несколько ссылок, где можно найти примеры, чтобы использовать эти методы?Или, может быть, есть другой способ решить мою проблему?

Спасибо,

Лука

Ответы [ 2 ]

11 голосов
/ 03 июля 2010

Есть много способов сделать это.

  1. Каскадные задания

    Создайте объект JobConf «job1» для первого задания и установите все параметры с «input» в качестве inputdirectory и «temp» в качестве выходного каталога. Выполните это задание: JobClient.run(job1).

    Сразу под ним создайте объект JobConf "job2" для второго задания и установите все параметры с помощью "temp" в качестве входного каталога и "output" в качестве выходного каталога. Выполните это задание: JobClient.run(job2).

  2. Два объекта JobConf

    Создайте два объекта JobConf и установите в них все параметры, как (1), за исключением того, что вы не используете JobClient.run.

    Затем создайте два объекта Job с параметрами jobconfs:

    Job job1=new Job(jobconf1); Job job2=new Job(jobconf2);

    Используя объект jobControl, вы указываете зависимости задания и затем запускаете задания:

    JobControl jbcntrl=new JobControl("jbcntrl");
    jbcntrl.addJob(job1);
    jbcntrl.addJob(job2);
    job2.addDependingJob(job1);
    jbcntrl.run();
    
  3. ChainMapper и ChainReducer

    Если вам нужна структура, похожая на Map + | Уменьшить | Map *, вы можете использовать классы ChainMapper и ChainReducer, которые поставляются с Hadoop версии 0.19 и выше. Обратите внимание, что в этом случае вы можете использовать только один редуктор, но любое количество картографов до или после него.

0 голосов
/ 14 ноября 2012

Я думаю, что вышеупомянутое решение включает в себя операции ввода-вывода диска, поэтому будет замедляться с большими наборами данных. Альтернативой является использование Oozie или Cascading.

...