как отправить много заданий mapreduce в один терминал?

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

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


person user974270    schedule 29.03.2012    source источник


Ответы (1)


Вы вызываете ToolRunner.run(..) в цикле внутри вашего основного метода. Обязательно измените свой экземпляр Tool так, чтобы он вызывал 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();
  }
}
person Chris White    schedule 30.03.2012
comment
в приведенном выше примере предполагается, что аргументы фиксированы, верно? что, если я хочу передать разные аргументы другому заданию? Спасибо - person user974270; 30.03.2012
comment
просто создайте новый массив аргументов для каждой итерации цикла и измените содержимое по мере необходимости. - person Chris White; 30.03.2012
comment
Мне кажется, что таким образом, не может выполнить мою задачу, она закончит одну работу, затем отправит другую, то есть сдать работу последовательно, а я хочу сдать работу параллельно, верно? - person user974270; 30.03.2012
comment
извините, потому что я использую job.waitForCompletion(true) вместо job.submit, так что это моя проблема, ваше решение может отправлять много заданий параллельно - person user974270; 30.03.2012
comment
@ChrisWhite: я согласен с твоим решением. Но могу ли я получить значения счетчика каждого отправленного задания после завершения каждого задания? - person Binary01; 15.01.2014