Установка количества редукторов для приложения Amazon EMR

Я пытаюсь запустить пример wordcount в Amazon EMR.

-1- Сначала я создаю кластер с помощью следующей команды:

./elastic-mapreduce --create --name "MyTest" --alive

Это создает кластер с одним экземпляром и возвращает идентификатор задания, скажем, j-12NWUOKABCDEF

-2- Во-вторых, я запускаю задание, используя следующую команду:

./elastic-mapreduce --jobflow j-12NWUOKABCDEF --jar s3n: //mybucket/jar-files/wordcount.jar --main-class abc.WordCount --arg s3n: // mybucket / input-data /

--arg s3n: // mybucket / output-data /

--arg -Dmapred.reduce.tasks = 3

Мой класс WordCount принадлежит пакету abc.

Это выполняется без проблем, но я получаю только один редуктор. Это означает, что параметр mapred.reduce.tasks = 3 игнорируется.

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

Спасибо, Нирадж.


person user2262938    schedule 02.09.2013    source источник


Ответы (3)


"-D" и "mapred.reduce.tasks=3" должны быть отдельными аргументами.

person Judge Mental    schedule 19.03.2014

Попробуйте запустить кластер EMR, установив reducer и mapper с параметром --bootstrap-action как

--bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-daemons --args "-m,mapred.map.tasks=6,-m,mapred.reduce.tasks=3"
person mat_vee    schedule 18.10.2013

Вы можете использовать встроенный параметр Jar для потоковой передачи -numReduceTasks. Например, с помощью инструмента CLI Ruby EMR:

elastic-mapreduce --create --enable-debugging \
  --ami-version "3.3.1" \
  --log-uri s3n://someBucket/logs \
  --name "someJob" \
  --num-instances 6 \
  --master-instance-type "m3.xlarge"  --slave-instance-type "c3.8xlarge" \
  --bootstrap-action s3://elasticmapreduce/bootstrap-actions/install-ganglia \
  --stream \
    --arg "-files" \
    --arg "s3://someBucket/some_job.py,s3://someBucket/some_file.txt" \
    --mapper "python27 some_job.py some_file.txt" \
    --reducer cat \
    --args "-numReduceTasks,8" \
    --input s3://someBucket/myInput \
    --output s3://someBucket/myOutput \
    --step-name "main processing"
person Dolan Antenucci    schedule 12.01.2015
comment
Это функция, встроенная в Hadoop (см. wiki.apache.org/hadoop/HadoopStreaming), поэтому дважды проверьте, соответствует ли ваша команда той, что у меня есть (например, важно использовать --args вместо --arg). - person Dolan Antenucci; 23.03.2015