Как отправить много рабочих мест Mapreduce в одном терминале? - PullRequest
1 голос
/ 30 марта 2012

Я использую mapreduce для запуска программы, чтобы отправить одно задание: Я могу использовать следующий формат ./hadoop jar program.jar arguments

в одном терминале, это может отправить одну работу, но что если я хочу отправить 100 работ? невозможно
открыть 100 терминалов поэтому я ищу методы отправки пакетной работы, спасибо!

1 Ответ

3 голосов
/ 30 марта 2012

Вы вызываете ToolRunner.run (..) в цикле внутри вашего основного метода.Обязательно измените свой экземпляр инструмента так, чтобы он вызывал Job.submit(), а не Job.waitForCompletion() - чтобы ваши задания выполнялись параллельно, а не последовательно (вы по-прежнему ограничены тем, сколько заданий вы можете запускать параллельно в зависимости от размера / конфигурации кластера):

public class MyDriver extends Configured implements Tool {
  public static void main(String args[]) {
    for (int x = 0; x < 100; x++) {
      ToolRunner.run(new MyDriver(), args);
    }
  }

  public int run(String args) {
    Job job = new Job(getConf());

    // job set up
    // ...

    job.submit();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...