设置Amazon EMR应用程序的Reducers数量

时间:2013-09-02 22:28:14

标签: hadoop amazon-emr reducers mappers

我正在尝试在Amazon EMR下运行wordcount示例。

-1-首先,我使用以下命令创建一个集群:

./ elastic-mapreduce --create --name“MyTest”--alive

这会创建一个包含单个实例的集群并返回一个jobID,比如说j-12NWUOKABCDEF

-2-其次,我使用以下命令启动Job:

./ 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。

这没有任何问题,但我只得到一个reducer。 这意味着忽略参数“mapred.reduce.tasks = 3”。

有没有办法指定我希望我的应用程序使用的reducer数量?

谢谢你, Neeraj。

3 个答案:

答案 0 :(得分:2)

"-D""mapred.reduce.tasks=3"应该是单独的参数。

答案 1 :(得分:0)

尝试使用--bootstrap-action选项设置reducers和mapper来启动EMR集群

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

答案 2 :(得分:-1)

您可以使用流媒体Jar的-numReduceTasks内置选项。例如,使用Ruby EMR CLI工具:

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"