3

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

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

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

这将创建一个具有单个实例的集群并返回一个 jobID,比如说 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”被忽略。

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

谢谢你,尼拉杰。

4

3 回答 3

2

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

于 2014-03-19T19:41:48.000 回答
0

尝试通过使用 --bootstrap-action 选项设置减速器和映射器来启动 EMR 集群

--bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-daemons --args "-m,mapred.map.tasks=6,-m,mapred.reduce.tasks=3"
于 2013-10-18T17:12:07.113 回答
-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"
于 2015-01-12T20:44:12.030 回答