为amazonemr应用程序设置reducer的数量

bhmjp9jg  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(350)

我试图在amazonemr下运行wordcount示例。
-1-首先,我使用以下命令创建一个集群:
.mapreduce--create--name“mytest”--活动
这将创建一个带有单个示例的集群并返回一个jobid,比如j-12nwukdef
-2-其次,我使用以下命令启动作业:
./elastic mapreduce--jobflow j-12nwukdef--jar s3n://mybucket/jar files/wordcount.jar--main class .wordcount--arg s3n://mybucket/input data/
--arg s3n://mybucket/输出数据/
--arg-dmapred.reduce.tasks=3
我的wordcount类属于包。
这执行没有任何问题,但我只得到一个减速机。这意味着参数“mapred.reduce.tasks=3”被忽略。
有没有办法指定我希望我的应用程序使用的减速机的数量?
谢谢你,尼拉吉。

mkh04yzy

mkh04yzy1#

您可以使用流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"
w8biq8rn

w8biq8rn2#

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

dy2hfwbg

dy2hfwbg3#

使用--bootstrap action选项将reducer和mapper设置为

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

相关问题